• 大小: 4.12MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-11-14
  • 语言: C/C++
  • 标签: C++  KNN算法  

资源简介

使用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 < datanum; i++){
double sum = 0;
for(int j = 0; j < datadim; 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 < k; i++){
double mindist = 0;
int minsub = -1;

//初始化最小距离及其下标值
for(int j = 0; j < datanum; j++){
if(tuples[j][datadim+2] == 0){
mindist = tuples[j][datadim+1];
minsub = j;
break;
}
}

//遍历寻找最小距离及其下标值
for(int j = 0; j < datanum; j++){
if(tuples[j][datadim+1] < mindist){
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 < cnum; 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 < datadim; i++){
cin >> target[i];
}

ifstream  infile(filename);
if(!infile){
cout << “无法打开文件“ << endl;
return 0;
}

for(int i = 0; i < datanum;  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\link-cvtres.read.1.tlog
     文件           2  2016-06-16 22:45  KNN\KNN\Debug\link-cvtres.write.1.tlog
     文件           2  2016-06-16 22:45  KNN\KNN\Debug\link-rc.read.1.tlog
     文件           2  2016-06-16 22:45  KNN\KNN\Debug\link-rc.write.1.tlog
     文件           2  2016-06-16 22:45  KNN\KNN\Debug\link.12880-cvtres.read.1.tlog
     文件           2  2016-06-16 22:45  KNN\KNN\Debug\link.12880-cvtres.write.1.tlog
     文件           2  2016-06-16 22:45  KNN\KNN\Debug\link.12880-rc.read.1.tlog
     文件           2  2016-06-16 22:45  KNN\KNN\Debug\link.12880-rc.write.1.tlog
     文件           2  2016-06-16 22:45  KNN\KNN\Debug\link.12880.read.1.tlog
     文件           2  2016-06-16 22:45  KNN\KNN\Debug\link.12880.write.1.tlog
     文件           2  2016-06-16 22:45  KNN\KNN\Debug\link.2476-cvtres.read.1.tlog
............此处省略32个文件信息

评论

共有 条评论