資源簡介
本算法是Iris數據集使用KNN算法的代碼,KNN算法的實現是比較簡單的,我使用的是最簡單的KNN算法,可以作為借鑒。
代碼片段和文件信息
#include?“stdafx.h“
#include
#include?
#include?
#include???//文件流庫函數
#include?
#define?pi?3.1415926
using?namespace?std;
double?Data[150][5];//原始數據
double?Train_Data[120][5];//訓練數據
double?Test_Data[30][5];//測試數據
int?Train_number?=?120;
int?Test_number?=?30;
//輸入數據
void?input()
{
double?feaure_one?feaure_two?feaure_three?feaure_four?classification;
ifstream?infile;???//輸入流
ofstream?outfile;???//輸出流
infile.open(“E:\\研一\\上半年\\數據挖掘\\我的任務\\數據挖掘\\Iris?Data?Set\\iris.txt“?ios::in);
if?(!infile.is_open())
cout?<“Open?file?failure“?< int?row?=?0;
int?column?=?0;
while?(!infile.eof())????????????//?若未到文件結束一直循環
{
infile?>>?feaure_one?>>?feaure_two?>>?feaure_three?>>?feaure_four?>>?classification;
Data[row][column]?=?feaure_one;
Data[row][column?+?1]?=?feaure_two;
Data[row][column?+?2]?=?feaure_three;
Data[row][column?+?3]?=?feaure_four;
Data[row][column?+?4]?=?classification;
row++;
column?=?0;
}
for?(int?i?=?0;i?150;i++)?{
for?(int?j?=?0;j?5;j++)?{
if?(i Train_Data[i][j]?=?Data[i][j];
else
Test_Data[i?-?Train_number][j]?=?Data[i][j];
}
}
infile.close();
}
//k-近鄰分類
double?Data_sum[120][2]?=?{?0?};
double?Max_ten_data[10][2]?=?{?0?};
double?Max_set[3][2]?=?{?0?};
//k-近鄰分類的清零
void?K_Close_neighbor_clear_zero()?{
for?(int?i?=?0;i? for?(int?j?=?0;j?2;j++)?{
Data_sum[i][j]?=?0;
}
}
for?(int?i?=?0;i?10;i++)?{
for?(int?j?=?0;j?2;j++)?{
Max_ten_data[i][j]?=?0;
}
}
for?(int?i?=?0;i?3;i++)?{
for?(int?j?=?0;j?2;j++)?{
Max_set[i][j]?=?0;
}
}
Max_set[0][0]?=?0;
Max_set[1][0]?=?0;
Max_set[2][0]?=?0;
}
void?Sort()?{
for?(int?j?=?0;j?(Train_number?-?1);j++)?{
for?(int?k?=?j?+?1;k? if?(Data_sum[j][0]?>?Data_sum[k][0])?{
doubl
評論
共有 條評論