小工具知识网

当前位置: 首页 > 行业知识 > k近邻分类算法实现(KNN)

行业知识

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)

解读一下代码:

代码的主要步骤如下:

  1. 导入所需的库:

    • 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)

最后的输出将显示对电影类别的预测结果。

其中使用到的表格数据如下所示:


就介绍到这里啦~~

​ 如果觉得作者写的不错,求给博主一个大大的点赞支持一下,你们的支持是我更新的最大动力!

​ 如果觉得作者写的不错,求给博主一个大大的点赞支持一下,你们的支持是我更新的最大动力!

​ 如果觉得作者写的不错,求给博主一个大大的点赞支持一下,你们的支持是我更新的最大动力!

上一篇:怎么终止扣钱申请服务器?

下一篇:揭秘钻石投票系统背后的盈利秘诀!