什么是KNN算法及对新闻分类示例分析
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,今天就跟大家聊聊有关什么是KNN算法及对新闻分类示例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1. 什么是KNN算法KNN的全称是(K
千家信息网最后更新 2025年12月02日什么是KNN算法及对新闻分类示例分析
今天就跟大家聊聊有关什么是KNN算法及对新闻分类示例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
1. 什么是KNN算法
KNN的全称是(K Nearest Neighbors) K最邻算法,意思是K个最近的邻居。是最简单的分类算法之一。 KNN是通过测量不同特征值之间的距离进行分类。它的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别,其中K通常是不大于20的整数。KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。
算法流程
对每一个未知点执行:
计算未知点到所有已知类别点的距离
按距离排序(升序)
选取其中前k个与未知点离得最近的点
统计k个点中各个类别的个数
上述k个点里类别出现频率最高的作为未知点的类别
优缺点
优点:
简单有效、易理解缺点:
k近邻需要保存全部数据集,因此对内存消耗大,当数据集较大时对设备要求非常高;
需要计算每个未知点到全部已知点的距离,可能会很耗时;
分类结果不易理解
2.示例
根据新闻文本判断进行分类,如是科技新闻还是体育新闻等。
训练数据样表类型:

# -*- coding: utf-8 -*-import pandas as pdimport matplotlib.pyplot as pltimport matplotlibimport jiebafrom sklearn.feature_extraction.text import CountVectorizerfrom sklearn.neighbors import KNeighborsClassifierfrom sklearn.metrics import confusion_matriximport seaborn as sns####1.解决中文乱码问题#指定默认字体 matplotlib.rcParams['font.sans-serif'] = ['SimHei'] matplotlib.rcParams['font.family']='sans-serif' #解决负号'-'显示为方块的问题 matplotlib.rcParams['axes.unicode_minus'] = False###2 。导入数据raw_train = pd.read_csv("./train_sample_utf8.csv",encoding="utf-8")raw_test = pd.read_csv("./test_sample_utf8.csv",encoding="utf8")### 3. 查看数据print(raw_train.head(5))print(raw_train.shape)print(raw_test.shape)####4. 对数据进行分类图表显示##plt.figure(figsize=(15, 8))##plt.subplot(1, 2, 1) ####要生成一行两列,这是第一个图plt.subplot('行','列','编号')##raw_train["分类"].value_counts().sort_index().plot(kind="barh",title='训练集新闻主题分布')##plt.subplot(1, 2, 2)##raw_test["分类"].value_counts().sort_index().plot(kind="barh",title='测试集新闻主题分布')####5. 定义 对文章进行分词函数def news_cut(text): return " ".join(list(jieba.cut(text)))#简单测试下分词效果#test_content = "六月初的一天,来自深圳的中国旅游团游客纷纷拿起相机拍摄新奇刺激的好莱坞环球影城主题公园场景。"##print(news_cut(test_content)) ###6. 利用封装的分词函数,对训练集和测试集中的新闻内容进行分词处理raw_train["分词文章"] = raw_train["文章"].map(news_cut)raw_test["分词文章"] = raw_test["文章"].map(news_cut)###查看数据print(raw_train.head(5))####7. 加载停用词stop_words = []file = open("./stopwords.txt",encoding="utf-8") for line in file: stop_words.append(line.strip())file.close()####8.利用CountVectorizer统计词出现频率,并转为向量vectorizer = CountVectorizer(stop_words=stop_words)X_train = vectorizer.fit_transform(raw_train["分词文章"])X_test = vectorizer.transform(raw_test["分词文章"])#####9. 利用knn算法进行预测 knn = KNeighborsClassifier(n_neighbors=10,weights="distance")knn.fit(X_train, raw_train["分类"])Y_test = knn.predict(X_test)##将真实测试值 与预测图较,并绘制热力图展示 ax = sns.heatmap(confusion_matrix(raw_test["分类"].values,Y_test),linewidths=.5,cmap="Greens", annot=True, fmt='d',xticklabels=knn.classes_, yticklabels=knn.classes_)ax.set_ylabel('真实')ax.set_xlabel('预测')ax.xaxis.set_label_position('top') ax.xaxis.tick_top()ax.set_title('混淆矩阵热力图')看完上述内容,你们对什么是KNN算法及对新闻分类示例分析有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
分类
算法
数据
文章
类别
新闻
样本
内容
测试
示例
主题
特征
utf-8
训练
分析
函数
点到
空间
邻居
问题
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
桌面应用 软件开发
服务器端口映射为何第二天失效
数据库权限的命令
msde数据库下载官网
hp刀片服务器 管理
邯郸工业软件开发哪家好
阿里政务云数据库的类型
如何选择网络安全零信任
邮件服务器的ip地址
安装安全狗后服务器无法启动
服务器全球排名
近五年重大网络安全事件
软件开发中计划的目的
网络安全第一上市公司
网络安全作文100字小学生
不需要服务器的git管理
武器装备网络安全试验鉴定
程序员用什么服务器安全
安徽web前端软件开发价格表
设计良好的数据库可以减少
大会服务器
深圳软件开发培训骗局
数据库序列比对
手机上服务器无法连接是怎么回事
人民银行网络安全工作总结
表单大师怎么收集数据库
维护mysql数据库安全性
即墨区电商软件开发外包公司
曲江租房软件开发
数据库年份怎么获取