knn算法python代码案例
时间: 2023-07-22 12:39:54 浏览: 56
以下是一个简单的KNN算法的Python代码案例,假设我们有一个数据集,包含两个特征x和y,分别表示一个点在二维平面上的横坐标和纵坐标,以及一个类别标签label(0或1):
```python
import numpy as np
# 距离函数
def distance(x1, x2):
return np.sqrt(np.sum((x1 - x2) ** 2))
# KNN算法
def knn(X_train, y_train, X_test, k):
num_test = X_test.shape[0]
y_pred = np.zeros(num_test, dtype=y_train.dtype)
for i in range(num_test):
distances = np.array([distance(X_test[i], X_train[j]) for j in range(X_train.shape[0])])
nearest_indices = np.argsort(distances)[:k]
nearest_labels = y_train[nearest_indices]
y_pred[i] = np.argmax(np.bincount(nearest_labels))
return y_pred
```
我们可以使用这个函数来预测测试集中的样本类别:
```python
# 生成随机数据集
X_train = np.random.rand(100, 2)
y_train = np.random.randint(0, 2, 100)
X_test = np.random.rand(10, 2)
# 使用KNN算法进行预测
y_pred = knn(X_train, y_train, X_test, 3)
print("预测结果:", y_pred)
```
输出结果为预测的测试集样本类别。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)