行业知识
k近邻分类算法实现(KNN)
2026-11-07 16:45:26
来源:互联网转载
KNN算法实现
���近要用到对 某些数据进行自动识别分类,简单学习了一下k近邻算法,分享一下。
例如:电影动作片爱情片分类识别
这里我们使用了sklearn库,它用起来简单方便。
先提供代码如下:
import numpy as npimport pandas as pdfrom IPython.display import displayimport seaborn as snsimport matplotlib.pyplot as pltfrom sklearn.neighbors import KNeighborsClassifierdata=pd.read_excel('/Users/_qiang/Desktop/识别数据集.xlsx',sheet_name=1)display(data)y = data["类别"]X = data[["打斗镜头","亲吻镜头"]]display(y)display(X)y.map({"动作片":0,"爱情片":1})plt.figure()plt.scatter(X["打斗镜头"],X["亲吻镜头"],c=y.map({"动作片":0,"爱情片":1}))action=X.loc[y == "动作片"]love = X.loc[y =="爱情片"]colors = sns.color_palette("husl")plt.figure()plt.scatter(action["打斗镜头"],action["亲吻镜头"],marker="+",s=80,color = colors[0],label="action")plt.scatter(love["打斗镜头"],love["亲吻镜头"],marker="_",s=80,color = colors[1],label="love")plt.legend()plt.xlabel("action",color=colors[0],fontsize=20)plt.ylabel("love",color=colors[1],fontsize=20)plt.show()knn = KNeighborsClassifier(n_neighbors=3)# 样本标签数值化处理target = y.map({"动作片":0,"爱情片":1})knn.fit(X,target)#knn算法对象被训练之后,就成为了一个 模型对象。可以预测未知数据film=[[10,2],[12,7],[5,10]]prediction = knn.predict((film))print(prediction) 解读一下代码:
代码的主要步骤如下:
-
导入所需的库:
- numpy:用于支持数组和矩阵运算。
- pandas:用于数据处理和分析。
- IPython.display:用于在 IPython 环境中显示数据。
- seaborn:用于创建统计图形的库。
- matplotlib.pyplot:用于绘制图形。
- sklearn.neighbors.KNeighborsClassifier:用于构建 K 近邻分类器模型。
-
从 Excel 文件中读取数据集:
data = pd.read_excel('/Users/guo_qiang/Desktop/盲识别数据集.xlsx', sheet_name=1) -
显示数据集的内容:
display(data)
-
提取特征和标签:
y = data["类别"]X = data[["打斗镜头", "亲吻镜头"]]
-
对标签数据进行映射处理:
y.map({"动作片": 0, "爱情片": 1}) -
绘制散点图:
- 使用 plt.scatter 函数绘制特征数据的散点图,并根据标签进行着色。
-
将数据集按类别拆分:
- 将数据集分为动作片和爱情片两个子集,分别进行散点图展示。
-
创建 K 近邻分类器模型:
knn = KNeighborsClassifier(n_neighbors=3)
-
将标签数据数值化并训练模型:
target = y.map({"动作片": 0, "爱情片": 1})knn.fit(X, target) -
使用训练好的模型进行预测:
film = [[10, 2], [12, 7], [5, 10]]prediction = knn.predict(film)print(prediction)
最后的输出将显示对电影类别的预测结果。
其中使用到的表格数据如下所示:
就介绍到这里啦~~
如果觉得作者写的不错,求给博主一个大大的点赞支持一下,你们的支持是我更新的最大动力!
如果觉得作者写的不错,求给博主一个大大的点赞支持一下,你们的支持是我更新的最大动力!
如果觉得作者写的不错,求给博主一个大大的点赞支持一下,你们的支持是我更新的最大动力!
上一篇:怎么终止扣钱申请服务器?
下一篇:揭秘钻石投票系统背后的盈利秘诀!