knn算法python代码实例
时间: 2023-10-11 08:11:59 浏览: 108
以下是一个KNN算法的Python代码实例:
```
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# 加载鸢尾花数据集
iris = load_iris()
X = iris.data
y = iris.target
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
# 构建KNN分类器
knn = KNeighborsClassifier(n_neighbors=3)
# 训练模型
knn.fit(X_train, y_train)
# 预测
y_pred = knn.predict(X_test)
# 输出准确率
print("Accuracy:", knn.score(X_test, y_test))
```
以上代码使用了scikit-learn库中的KNeighborsClassifier类来构建KNN分类器,并使用load_iris函数加载了鸢尾花数据集。代码将数据集分为训练集和测试集,并使用fit方法训练模型。最后,使用predict方法进行预测,并输出分类器的准确率。
相关问题
knn算法python代码
以下是一个简单的knn算法的Python代码:
```python
from math import sqrt
# 计算两个向量之间的欧几里德距离
def euclideanDistance(instance1, instance2, length):
distance = 0
for i in range(length):
distance += pow((instance1[i] - instance2[i]), 2)
return sqrt(distance)
# 返回训练数据集中与测试实例距离最近的k个实例
def getNeighbors(trainingSet, testInstance, k):
distances = []
length = len(testInstance)-1
for x in range(len(trainingSet)):
dist = euclideanDistance(testInstance, trainingSet[x], length)
distances.append((trainingSet[x], dist))
distances.sort(key=lambda x: x[1])
neighbors = []
for x in range(k):
neighbors.append(distances[x][0])
return neighbors
# 针对给定测试集knn算法的主要功能
def getResponse(neighbors):
classVotes = {}
for x in range(len(neighbors)):
response = neighbors[x][-1]
if response in classVotes:
classVotes[response] += 1
else:
classVotes[response] = 1
sortedVotes = sorted(classVotes.items(), key=lambda x: x[1], reverse=True)
return sortedVotes[0][0]
# 通过计算准确性来评估模型
def getAccuracy(testSet, predictions):
correct = 0
for x in range(len(testSet)):
if testSet[x][-1] == predictions[x]:
correct += 1
return (correct / float(len(testSet))) * 100.0
# 测试knn算法
def main():
# 模拟训练集
trainSet = [[2, 2, 2, 'a'], [4, 4, 4, 'b'], [5, 5, 5, 'b'], [3, 3, 3, 'a'], [6, 6, 6, 'b'], [8, 8, 8, 'b'], [7, 7, 7, 'a']]
# 模拟测试集
testSet = [[5, 5, 5, 'a'], [2, 2, 2, 'b'], [3, 3, 3, 'a'], [8, 8, 8, 'b']]
# 设置k值
k = 3
predictions = []
for x in range(len(testSet)):
neighbors = getNeighbors(trainSet, testSet[x], k)
result = getResponse(neighbors)
predictions.append(result)
print(f"预测值为{result}")
accuracy = getAccuracy(testSet, predictions)
print('准确率: ' + repr(accuracy) + '%')
if __name__ == '__main__':
main()
```
这是一个基本的knn算法代码,适用于任何数据集。当然,您可以根据需要对其进行修改和扩展。
使用鸢尾花数据集来做knn的python代码实例
当然可以。使用Python的scikit-learn库进行KNN(K-Nearest Neighbors,最近邻算法)分类,以Iris(鸢尾花)数据集为例,首先需要导入所需的库并加载数据,然后训练模型、进行预测和评估性能。这是一个基本的步骤:
```python
# 导入所需库
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
# 加载鸢尾花数据集
iris = load_iris()
X = iris.data # 特征
y = iris.target # 类别标签
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建KNN分类器,设置k值为3(可以根据需求调整)
knn = KNeighborsClassifier(n_neighbors=3)
# 训练模型
knn.fit(X_train, y_train)
# 进行预测
y_pred = knn.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)
#
阅读全文
相关推荐















