- 什么是kNN算法?
kNN(k-Nearest Neighbors)算法是一种基于实例的学习或无监督学习方法。它不依赖于任何模型,并且是一种惰性学习算法。它在分类和回归问题中都有应用。kNN算法的主要思想是:如果一个样本在特征空间中的k个最相似(即特征空间中最近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。
- 实现步骤
首先需要导入必要的库,包括pandas、numpy和scikit-learn等。
- 导入pandas和numpy:
import pandas as pd
import numpy as np
- 导入scikit-learn中的knn模型和模型选择函数:
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
- 加载数据集并进行预处理:
df = pd.read_csv('iris.csv')
X = df.drop(['species'], axis=1)
y = df['species']
- 划分训练集和测试集:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
- 创建knn分类器模型:
knn = KNeighborsClassifier(n_neighbors=3)
- 对训练集进行拟合:
knn.fit(X_train, y_train)
- 使用测试集进行预测,并输出准确率:
accuracy = knn.score(X_test, y_test)
print(' Accuracy:', accuracy)
- 示例说明
下面以鸢尾花数据集为例,展示如何使用kNN算法进行分类。
示例1:使用kNN算法对鸢尾花数据集进行分类。
- 导入必要的库:
import pandas as pd
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
- 加载数据集并进行预处理:
df = pd.read_csv('iris.csv')
X = df.drop(['species'], axis=1)
y = df['species']
- 划分训练集和测试集:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
- 创建knn分类器模型:
knn = KNeighborsClassifier(n_neighbors=3)
- 对训练集进行拟合:
knn.fit(X_train, y_train)
- 使用测试集进行预测,并输出准确率:
accuracy = knn.score(X_test, y_test)
print(' Accuracy:', accuracy)
此时,输出的准确率为0.9667。
示例2:k值的确定
k值的确定对于kNN算法的性能至关重要。我们可以使用交叉验证来确定最优的k值。
- 导入必要的库和函数:
import pandas as pd
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import cross_val_score
# 加载数据集并进行预处理
df = pd.read_csv('iris.csv')
X = df.drop(['species'], axis=1)
y = df['species']
# 创建knn分类器模型
knn = KNeighborsClassifier()
# 使用交叉验证来选择最优的k值(k的取值范围为1-10)
k_range = list(range(1, 11))
k_scores = []
for k in k_range:
knn = KNeighborsClassifier(n_neighbors=k)
scores = cross_val_score(knn, X, y, cv=10, scoring='accuracy')
k_scores.append(scores.mean())
# 输出k值及其对应的准确率
print(k_scores)
此时,我们可以得到不同k值下对应的十折交叉验证的准确率。然后根据图形来选择最优的k值。
这就是使用python实现kNN分类算法的完整攻略,希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用python实现kNN分类算法 - Python技术站