knn的python代码
时间: 2023-05-14 12:05:46 浏览: 25
以下是一个简单的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值。
相关问题
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)
```
输出应该是一个包含两个数字的数组,代表对应的测试样本的预测标签。
sklearn knn python代码
以下是使用sklearn库实现KNN算法的Python代码示例:
```python
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
# 导入数据集
iris = datasets.load_iris()
X = iris.data
y = iris.target
# 切分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
# 创建KNN分类器对象
knn = KNeighborsClassifier(n_neighbors=3)
# 拟合训练集数据
knn.fit(X_train, y_train)
# 预测测试集数据
y_pred = knn.predict(X_test)
# 打印预测结果
print("预测结果:", y_pred)
```
请注意,这只是一个简单的示例代码,实际使用时可能需要根据具体情况进行适当的调整和优化。
相关推荐







