扫码阅读
手机扫码阅读
k-近邻算法介绍及实例
181 2024-10-28
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
查看原文:k-近邻算法介绍及实例
文章来源:
Python学习杂记
扫码关注公众号
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学习杂记
扫码关注公众号
Python学习杂记的其他文章
Matplotlib作图简介
Matplotlib是一个用于在Python中绘制数组的图形库,它提供了MATLAB风格的绘图功能。
Python常用内置函数使用介绍
Python 提供了许多内置函数,这些函数可以帮助我们更高效地编写代码。
cp-sat求解器介绍及使用案例
ortools是Google开发的一套优化工具,其中ortools中自带的cp-sat是一个用于求解约束规划的求解器。
itertools:Python中迭代器工具
在Python中,迭代器是一个非常强大的工具,允许我们以更高效的方式处理数据。然而,当我们需要处理大量的数据
把py程序封装成可执行文件
程序封装指把程序脚本进行一些打包、解析、整合处理生成一个新的文件。封装以后,其他没有安装(python)的电脑也能运行该程序,也能实现该程序的结果。
加入社区微信群
与行业大咖零距离交流学习
软件研发质量管理体系建设
白皮书上线