knn算法c++代码实现
时间: 2024-03-15 08:19:55 浏览: 103
对于您的问题,我可以提供以下代码实现来进行KNN算法:
```
// KNN算法的C++代码实现
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
// 计算两个点之间的距离
double distance(int x[], int y[], int n)
{
double dis = 0;
for(int i=0; i<n; i++)
{
dis += pow(x[i]-y[i], 2);
}
return sqrt(dis);
}
// KNN算法实现函数
int knn(int X[][2], int Y[], int n, int k, int x[])
{
// 创建距离数组
double distance_arr[n];
for(int i=0; i<n; i++)
{
distance_arr[i] = distance(X[i], x, k);
}
// 找到距离最小的k个样本
int index_arr[k];
for(int i=0; i<k; i++)
{
int index = min_element(distance_arr, distance_arr+n) - distance_arr;
distance_arr[index] = INT_MAX;
index_arr[i] = index;
}
// 统计k个样本中Y的取值
int count = 0;
for(int i=0; i<k; i++)
{
count += Y[index_arr[i]];
}
// 判断最终取值
if(count > k/2)
return 1;
else
return 0;
}
// 测试代码
int main()
{
// 构造样本
int X[5][2] = {{0, 0}, {0, 1}, {1, 0}, {1, 1}, {2, 2}};
int Y[5] = {0, 0, 0, 1, 1};
int n = 5;
// 输入新数据
int x[2];
cout << "请输入新数据的x和y坐标:";
cin >> x[0] >> x[1];
// KNN算法测试
int result = knn(X, Y, n, 3, x);
cout << "新数据预测结果为:" << result << endl;
return 0;
}
```
希望这段代码能够对您有所帮助。如果您还有其他问题或需要更多帮助,请随时问我。
阅读全文
相关推荐















