扫码阅读
手机扫码阅读

k-近邻算法介绍及实例

120 2024-10-28

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:k-近邻算法介绍及实例
文章来源:
Python学习杂记
扫码关注公众号
K-近邻算法(KNN)原理与实现

K-近邻算法(KNN)原理

K-近邻算法(KNN)基于一个简单的原则:如果一个样本在特征空间中的k个最相似(即最邻近)的样本中的大多数属于某一个类别,则该样本也划分为这个类别。样本之间的相似度通常通过欧式距离来计算,但由于各变量可能有不同的数量级和离散程度,因此在计算之前需要进行标准化处理。

实验数据与库导入

本文通过使用常见的鸢尾花(Iris)数据集来展示KNN算法的实现过程。首先导入必要的库:


from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn import preprocessing
import matplotlib.pyplot as plt
import pandas as pd

数据处理

接着,文中提供了数据的导入及其标准化处理的代码。数据被读取并分为特征X和标签y,之后使用MinMaxScaler进行标准化。


df = pd.read_csv('iris.csv', encoding = "gbk")
X = df.drop(columns='种类')
y = df['种类']
minmax = preprocessing.MinMaxScaler()
Xn = minmax.fit_transform(X)

K值选择与模型训练

文章接下来介绍了如何通过设置不同的K值来训练KNN模型,并使用交叉验证来评估其准确性。通过循环尝试不同的K值(从1到19),并记录每个K值下模型的平均准确率。


X_train, X_test, y_train, y_test = train_test_split(Xn, y, test_size=0.2, random_state=3)
dd = []
for k in range(1, 20):
    knn = KNeighborsClassifier(n_neighbors=k)
    knn.fit(X_train, y_train)
    scores = cross_val_score(knn, X_train, y_train, cv=3, scoring='accuracy')
    mm = round(scores.mean(), 3)
    dd.append(scores.mean())

通过分析这些准确率的图表,文中得出结论,在本例中k取12是最优的选择。

完整代码与模型训练

最后,提供了完整的代码,包括数据准备、模型训练和评估过程,以及使用图表来确定最佳的K值。通过最终的评估,模型在测试数据上的准确率被计算并四舍五入到三位小数。


# 完整代码示例
knnbest = KNeighborsClassifier(n_neighbors=12)
knnbest.fit(train_X, train_y)
round(knnbest.score(test_X, test_y), 3)

文章强调了KNN模型的简单性和易理解性,并鼓励读者自行操作尝试。

想要了解更多内容?

查看原文:k-近邻算法介绍及实例
文章来源:
Python学习杂记
扫码关注公众号