帮我用PYTHON写一个KNN算法
时间: 2023-05-14 07:07:29 浏览: 113
当然可以,以下是一个简单的KNN算法的Python代码:
```python
import numpy as np
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 = []
for x in X:
distances = np.sqrt(np.sum((self.X_train - x) ** 2, axis=1))
nearest_indices = np.argsort(distances)[:self.k]
nearest_labels = self.y_train[nearest_indices]
y_pred.append(np.bincount(nearest_labels).argmax())
return np.array(y_pred)
```
这个KNN类可以用于分类问题,其中k是最近邻居的数量,fit方法用于训练模型,predict方法用于预测新的数据点的标签。
相关问题
帮我用python写一个KNN算法训练自己数据集的代码
好的,以下是一个简单的KNN算法训练自己数据集的代码示例:
```python
import numpy as np
# 定义KNN算法函数
def knn(train_data, train_labels, test_data, k):
# 计算测试数据与训练数据之间的距离
distance = np.sqrt(np.sum(np.square(test_data - train_data), axis=1))
# 对距离进行排序
sorted_index = np.argsort(distance)
# 统计k个最近邻的类别
class_count = {}
for i in range(k):
label = train_labels[sorted_index[i]]
class_count[label] = class_count.get(label, 0) + 1
# 返回出现次数最多的类别
max_count = 0
max_label = -1
for label, count in class_count.items():
if count > max_count:
max_count = count
max_label = label
return max_label
# 加载数据集
train_data = np.array([[1, 2], [2, 1], [3, 4], [4, 3]])
train_labels = np.array([0, 0, 1, 1])
test_data = np.array([[1.5, 2.5], [3.5, 3.5]])
# 对测试数据进行预测
for i in range(test_data.shape[0]):
label = knn(train_data, train_labels, test_data[i], k=3)
print('测试数据{}的预测类别为{}'.format(test_data[i], label))
```
以上代码中,我们首先定义了一个knn函数,用于计算测试数据与训练数据之间的距离,并统计k个最近邻的类别,最后返回出现次数最多的类别。然后我们加载了一个简单的数据集,包含4个训练样本和2个测试样本,并使用knn函数对测试样本进行了预测。
帮我用python写一个KNN算法训练自己csv数据集的代码
好的,以下是一个使用KNN算法训练自己csv数据集的Python代码示例:
```python
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
# 加载数据集
data = pd.read_csv('your_csv_file.csv')
# 分离特征和标签
X = data.iloc[:, :-1].values
y = data.iloc[:, -1].values
# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
# 构建KNN模型
knn = KNeighborsClassifier(n_neighbors=5)
# 训练模型
knn.fit(X_train, y_train)
# 预测结果
y_predict = knn.predict(X_test)
# 输出准确率
print(knn.score(X_test, y_test))
```
以上代码中,我们首先使用pandas库中的read_csv函数加载了一个csv格式的数据集,然后使用iloc函数分离了特征和标签。接着使用train_test_split函数将数据集划分为训练集和测试集,并创建了一个KNeighborsClassifier对象,指定了k值为5。然后使用fit方法训练模型,使用predict方法对测试集进行预测,并输出了模型的准确率。
阅读全文