資源簡介
使用C++來實現KNN算法,開發環境為visual studio 2012

代碼片段和文件信息
//?KNN.cpp?:?定義控制臺應用程序的入口點。
//
#include?“stdafx.h“
#include?
#include?
#include?
#include?
using?namespace?std;
typedef?vector?Tuple;??//使用vector來存儲每一條數據
const?int?datadim?=?4;???//數據維數
const?int?datanum?=?140;???//樣本數據個數
const?int?k?=?10;??????????????//?
const?int?cnum?=?3;???????//類別個數
const?string?filename?=?“iris.txt“;????//樣本數據集文件名稱
//計算新數據與樣本數據的距離
void?getAllDist(Tuple?&tuple?vector?&tuples){
for(int?i?=?0;?i? double?sum?=?0;
for(int?j?=?0;?j? sum?+=?(tuples[i][j]?-?tuple[j])?*??(tuples[i][j]?-?tuple[j]);
}
tuples[i][datadim?+?1]?=?sum;
}
}
//根據距離找出最相近的K個樣本,并給出類別
void?getTargetC(Tuple?&tuple?vector?&tuples){
int?c[cnum]?=?{0};?//用來保存每個類別的個數
for(int?i?=?0;?i? double?mindist?=?0;
int?minsub?=?-1;
//初始化最小距離及其下標值
for(int?j?=?0;?j? if(tuples[j][datadim+2]?==?0){
mindist?=?tuples[j][datadim+1];
minsub?=?j;
break;
}
}
//遍歷尋找最小距離及其下標值
for(int?j?=?0;?j? if(tuples[j][datadim+1]? mindist?=?tuples[j][datadim+1];
minsub?=?j;
}
}
//對應類別個數+1
c[(int?(tuples[minsub][datadim]))?%?cnum]?+=?1;
tuples[minsub][datadim+2]?=?1;//標記此樣本,下次不再遍歷
}
int?max?=?c[0];
int?maxsub?=?0;
//找到個數最多的類別
for(int?i?=?1;?i? if(c[i]?>?max){
max?=?c[i];
maxsub?=?i;
}
}
cout<<“類別為:“?<(maxsub==0?maxsub?+?cnum?:?maxsub)?< }
int?main()
{
vector?tuples;
Tuple?target(datanum??0);
cout?<“請輸入要分類的數據:“?;
for(int?i?=?0;?i? cin?>>?target[i];
}
ifstream??infile(filename);
if(!infile){
cout?<“無法打開文件“?< return?0;
}
for(int?i?=?0;?i? Tuple?tuple(datanum?+?2?0);
string??str;
getline(infile?str);
istringstream?istr(str);
for(int?j?=?0;??j?<=?datadim;??j++){
istr?>>?tuple[j];
}
tuple.push_back(0);
tuple.push_back(0);
tuples.push_back(tuple);
}
getAllDist(target?tuples);
getTargetC(target?tuples);
system(“pause“);
return?0;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2016-06-16?22:58??KNN\
?????目錄???????????0??2016-06-13?23:02??KNN\Debug\
?????文件??????140800??2016-06-16?22:45??KNN\Debug\KNN.exe
?????文件?????1118436??2016-06-16?22:45??KNN\Debug\KNN.ilk
?????文件?????1436672??2016-06-16?22:45??KNN\Debug\KNN.pdb
?????目錄???????????0??2016-06-13?21:21??KNN\ipch\
?????目錄???????????0??2016-06-13?21:21??KNN\ipch\knn-3f40b13a\
?????文件?????2949120??2016-06-13?21:21??KNN\ipch\knn-3f40b13a\knn-323fc133.ipch
?????目錄???????????0??2016-06-16?22:53??KNN\KNN\
?????文件?????8454144??2016-06-16?22:58??KNN\KNN.sdf
?????文件?????????876??2016-06-13?21:21??KNN\KNN.sln
?????文件???????18944??2016-06-16?22:58??KNN\KNN.v11.suo
?????目錄???????????0??2016-06-16?22:45??KNN\KNN\Debug\
?????文件????????1366??2016-06-16?22:45??KNN\KNN\Debug\cl.command.1.tlog
?????文件???????10446??2016-06-16?22:45??KNN\KNN\Debug\CL.read.1.tlog
?????文件?????????772??2016-06-16?22:45??KNN\KNN\Debug\CL.write.1.tlog
?????文件??????????69??2016-06-16?22:45??KNN\KNN\Debug\KNN.lastbuildstate
?????文件????????1369??2016-06-16?22:45??KNN\KNN\Debug\KNN.log
?????文件??????509634??2016-06-16?22:45??KNN\KNN\Debug\KNN.obj
?????文件?????1245184??2016-06-13?22:43??KNN\KNN\Debug\KNN.pch
?????文件???????????2??2016-06-16?22:45??KNN\KNN\Debug\li
?????文件???????????2??2016-06-16?22:45??KNN\KNN\Debug\li
?????文件???????????2??2016-06-16?22:45??KNN\KNN\Debug\li
?????文件???????????2??2016-06-16?22:45??KNN\KNN\Debug\li
?????文件???????????2??2016-06-16?22:45??KNN\KNN\Debug\li
?????文件???????????2??2016-06-16?22:45??KNN\KNN\Debug\li
?????文件???????????2??2016-06-16?22:45??KNN\KNN\Debug\li
?????文件???????????2??2016-06-16?22:45??KNN\KNN\Debug\li
?????文件???????????2??2016-06-16?22:45??KNN\KNN\Debug\li
?????文件???????????2??2016-06-16?22:45??KNN\KNN\Debug\li
?????文件???????????2??2016-06-16?22:45??KNN\KNN\Debug\li
............此處省略32個文件信息
評論
共有 條評論