⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nn.cpp

📁 knn算法是数据挖掘中的一个常用算法。改算法能够实现分类和聚类。这个程序是KNN算法的一个演示程序
💻 CPP
字号:
// nn.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include<vector>
#include "data.h"
#include "iostream.h"
using namespace std;
#define n 10

int main()
{
	int a[n]={0,1,11,4,5,2,3,10,8,9};
	int m[n][n];     //定义邻接矩阵
	int i,j,z;
    cout<<"The data for experiment is:";
	for(i=0;i!=n;++i)
	{
		cout<<a[i]<<"\t";
	}
	cout<<endl;
    for (i=0;i!=n;++i)
	{
		for (j=0;j!=n;++j)
		{
			m[i][j]=(a[i]-a[j])>0?(a[i]-a[j]):(a[j]-a[i]);
		}
	}
    int l=0;
	int d=2;                           //设置阈值为2
	int k=0;                           //记录类的个数
    vector<data> b[n];                              
	data dat[n];
	for( i=0;i!=n;++i)
	{
		dat[i].setdata(a[i]);
	}
	dat[0].setcluster(0);
	b[0].push_back(dat[0]);
	for(j=1;j!=n;++j)
	{   int min=m[0][j];
		for(i=0;i!=n;i++)
		{
			if(b[i].size()!=0)
			{
				for(z=0;z!=b[i].size();++z)
				{
					int temp=b[i].at(z).getdata();
					int result=(a[j]-temp)>0?(a[j]-temp):(temp-a[j]);
	                if (result<min)
					{
						min=result;
                        l=b[i].at(z).getcluster();
					}
					
					
				}
			}
		}

       if(min>d) 
		{
			++k;
            dat[j].setcluster(k);
			b[k].push_back(dat[j]);
			
		}
		else 
		{   
			dat[j].setcluster(l);
		    b[l].push_back(dat[j]);
		}
		
	}

for(i=0;i!=n;++i)
{
	if(b[i].size()!=0)
	{cout<<"cluster"<<i<<":";}
	for(j=0;j!=b[i].size();++j)
	{
		cout <<b[i].at(j).getdata()<<"\t";
	}
	if (j=b[i].size()) cout<<endl;
}


	

	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -