扫码阅读
手机扫码阅读
k-近邻算法介绍及实例
93 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学习杂记的其他文章
Python地图可视化之folium(一)
folium是js上著名的地理信息可视化库leaflet.js为Python提供的接口,我们可以通过在Pyt
Plotly可视化介绍(一)
Plotly是一个开源、交互式和基于浏览器的Python图形库,可以创建能在仪表板或网站中使用的交互式图表。
使用OR-Tools解决多种类型的vrp问题
OR-Tools是谷歌的一个标准的运筹优化库,该运筹优化库封装了解决vrp问题的模型。
一份超全Python代码汇总备忘清单
今天,我给大家分享一份我在GitHub上搜集的Python编程代码汇总备忘清单。
动态规划原理及案例介绍
动态规划是一种常用的优化技术,本文介绍动态规划基本原理及常见案例。
加入社区微信群
与行业大咖零距离交流学习
软件研发质量管理体系建设
白皮书上线