knn的python代码
时间: 2023-05-14 18:05:46 浏览: 49
以下是一个简单的KNN算法的Python代码:
```python
import numpy as np
from collections import Counter
def knn(X_train, y_train, X_test, k):
distances = []
for i in range(len(X_train)):
distance = np.sqrt(np.sum(np.square(X_test - X_train[i, :])))
distances.append([distance, i])
distances = sorted(distances)
targets = []
for i in range(k):
index = distances[i][1]
targets.append(y_train[index])
return Counter(targets).most_common(1)[0][0]
```
其中,X_train是训练集的特征矩阵,y_train是训练集的标签,X_test是测试集的特征矩阵,k是KNN算法中的k值。
相关问题
KNNPython代码
以下是一个简单的KNN分类器的Python代码示例:
```python
import numpy as np
from collections import Counter
class KNN():
def __init__(self, k=3):
self.k = k
def fit(self, X_train, y_train):
self.X_train = X_train
self.y_train = y_train
def predict(self, X_test):
predictions = []
for x in X_test:
distances = []
for i, x_train in enumerate(self.X_train):
distance = np.sqrt(np.sum(np.square(x - x_train)))
distances.append((distance, i))
distances = sorted(distances)
k_nearest_neighbors = [self.y_train[i] for d, i in distances[:self.k]]
most_common = Counter(k_nearest_neighbors).most_common(1)
predictions.append(most_common[0][0])
return predictions
```
这个KNN分类器使用欧几里得距离计算距离,并且返回最常见的k个邻居的分类标签的众数作为预测结果。在使用之前,需要将要训练的数据和对应的标签传递给`fit()`函数。在进行预测时,将测试数据传递给`predict()`函数,它会返回一个包含预测标签的列表。
knn Python代码实现
当然可以!下面是一个简单的knn Python代码实现:
```python
import numpy as np
from collections import Counter
def euclidean_distance(x1, x2):
return np.sqrt(np.sum((x1 - x2)**2))
class KNN:
def __init__(self, k=3):
self.k = k
def fit(self, X, y):
self.X_train = X
self.y_train = y
def predict(self, X):
predicted_labels = [self._predict(x) for x in X]
return np.array(predicted_labels)
def _predict(self, x):
distances = [euclidean_distance(x, x_train) for x_train in self.X_train]
k_indices = np.argsort(distances)[:self.k]
k_nearest_labels = [self.y_train[i] for i in k_indices]
most_common = Counter(k_nearest_labels).most_common(1)
return most_common[0][0]
```
这个代码实现了一个简单的KNN分类器,其中欧式距离被用于计算相似度。使用方法如下:
```python
X_train = np.array([[1,2], [2,4], [3,2], [3,4]])
y_train = np.array([0, 0, 1, 1])
knn = KNN(k=3)
knn.fit(X_train, y_train)
X_test = np.array([[1,3], [2,1]])
predictions = knn.predict(X_test)
print(predictions)
```
输出应该是一个包含两个数字的数组,代表对应的测试样本的预测标签。
相关推荐
![py](https://img-home.csdnimg.cn/images/20210720083646.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)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)