k近邻python代码
时间: 2024-05-13 12:12:23 浏览: 13
k近邻算法是一种简单而又常用的机器学习算法,它可以用于分类和回归问题。以下是一个简单的k近邻算法的Python代码实现:
```
import numpy as np
from sklearn.neighbors import KNeighborsClassifier
# 创建训练数据集
X_train = np.array([[1,2],[2,3],[3,1],[4,5],[5,6],[6,4]])
y_train = np.array([0,0,0,1,1,1])
# 创建k近邻分类器
knn = KNeighborsClassifier(n_neighbors=3)
# 用训练数据集拟合分类器
knn.fit(X_train, y_train)
# 创建测试数据集
X_test = np.array([[2,1],[3,2],[4,3]])
# 用训练好的分类器进行预测
y_pred = knn.predict(X_test)
print(y_pred)
```
在这段代码中,我们使用了Scikit-learn库中的KNeighborsClassifier类,它实现了k近邻算法。首先,我们创建了一个训练数据集和对应的标签。然后,我们创建了一个KNeighborsClassifier对象,并设置了k值为3。接着,我们用训练数据集来拟合分类器。最后,我们创建了一个测试数据集,并用分类器对其进行预测。预测结果存储在变量y_pred中,并打印出来。
相关问题
k近邻算法python代码
以下是k近邻算法的Python代码:
```python
import numpy as np
from collections import Counter
class KNN:
def __init__(self, k):
self.k = k
def fit(self, X, y):
self.X_train = X
self.y_train = y
def euclidean_distance(self, X):
return np.sqrt(np.sum((self.X_train - X)**2, axis=1))
def predict(self, X):
distances = self.euclidean_distance(X)
k_nearest = np.argsort(distances)[:self.k]
k_nearest_labels = self.y_train[k_nearest]
most_common = Counter(k_nearest_labels).most_common(1)
return most_common[0][0]
```
其中,`fit`方法用于训练模型,`predict`方法用于预测数据。`euclidean_distance`方法用于计算欧几里得距离,并且`Counter`用于计算最近的k个样本中出现最多的标签。
python k近邻算法代码实现
Python中的k近邻算法(k-nearest neighbors algorithm)是一种基本的分类和回归方法,它通过衡量数据之间的距离来预测新数据的类别。下面是一个简单的Python代码实现k近邻算法:
```python
import numpy as np
# 计算两个样本之间的欧氏距离
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):
y_pred = [self._predict(x) for x in X]
return np.array(y_pred)
def _predict(self, x):
# 计算样本x与所有训练样本之间的距离
distances = [euclidean_distance(x, x_train) for x_train in self.X_train]
# 根据距离排序,获取最近的k个训练样本的类别
k_indices = np.argsort(distances)[:self.k]
k_nearest_labels = [self.y_train[i] for i in k_indices]
# 统计最近k个样本中出现次数最多的类别
most_common = np.argmax(np.bincount(k_nearest_labels))
return most_common
```
在上面的代码中,首先定义了一个计算欧氏距离的函数`euclidean_distance`,它用于衡量两个样本之间的距离。然后定义了一个`KNN`类,其中`fit`方法用于接收训练数据和标签,`predict`方法用于接收待预测样本并返回预测结果,`_predict`方法用于预测单个样本的类别。
在使用k近邻算法时,首先需要创建`KNN`对象并调用`fit`方法传入训练数据和标签。然后可以调用`predict`方法传入待预测样本,它会返回预测结果。
这只是一个简单的k近邻算法实现,可能存在一些缺陷和改进的空间。但它可以作为理解k近邻算法的基础,并可以根据具体需求进行修改和扩展。