k-近邻算法介绍及实例
发布于 2024-10-28
1045
版权声明
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
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模型的简单性和易理解性,并鼓励读者自行操作尝试。
Python学习杂记
Python学习杂记
扫码关注公众号
还在用多套工具管项目?
一个平台搞定产品、项目、质量与效能,告别整合之苦,实现全流程闭环。
查看方案
Python学习杂记的其他文章
数据分析常用方法介绍
本文介绍了6种常见的数据分析方法。
循环遍历的基本用法
for、while、if 在编程中经常用到,熟悉他们的用法,可以大大提高编程效率。循环是一种常用的程序控制结构,机器相比人类的最大优点之一,就是机器可以不眠不休的重复做某件事情,但人却不行。而“循环\x26quot;,则是实现让机器不断重复工作的关键概念。
claude 使用介绍
Claude是一款优秀的人工智能助手。
geatpy遗传算法包介绍(一)
Geatpy是国内几所高校做的一个开源遗传算法包,是一个高性能实用型进化算法工具箱。
jieba分词及词云图的制作
jieba是比较常用python的分词库,这里简单介绍它的基本用法。
加入社区微信群
与行业大咖零距离交流学习
PMO实践白皮书
白皮书上线
白皮书上线