• 大小: 4KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-05-12
  • 语言: C/C++
  • 标签: 数据挖掘  

资源简介

本算法是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“ << endl;
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 < Train_number;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 < Train_number;k++) {
if (Data_sum[j][0] > Data_sum[k][0]) {
doubl

评论

共有 条评论