【机器学习项目实战10例】(八):基于KMeans、DBSCAN新闻聚类分群

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 【机器学习项目实战10例】(八):基于KMeans、DBSCAN新闻聚类分群

一、新闻聚类分群

1、✌ 导入相关库
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.cluster import KMeans
from sklearn.cluster import DBSCAN
from sklearn.metrics.pairwise import cosine_similarity
import numpy as np
import pandas as pd
import jieba

sklearn.feature_extraction.text import CountVectorizer:文本向量化

from sklearn.cluster import KMeans:KMeans模型

from sklearn.cluster import DBSCAN:DBSCAN模型

from sklearn.metrics.pairwise import cosine_similarity:余弦相似度

2、✌ 读取数据
data=pd.read_excel('news.xls')
data.head()

3、✌ 中文分词
words=[]
for i,row in data.iterrows():
    word=jieba.cut(row['标题'])
    result=' '.join(word)
    words.append(result)
words

将数据中的标题栏利用jieba库进行分词,为后面搭建词频矩阵使用

4、✌ 文本向量化:建立词频矩阵
from sklearn.feature_extraction.text import CountVectorizer
vect=CountVectorizer()
x=vect.fit_transform(words)
x=x.toarray()
x

Python在处理数据需要数值型数据,需要将上文的文本数据转化为词频矩阵,可以利用CountVectorizer函数

他的原理是将words中的每个词去重以及出去无意义的词,进行编号,然后对应每个原文本计数该次出现的次数

5、✌ 构造特征矩阵
words_name=vect.get_feature_names()
df=pd.DataFrame(x,columns=words_name)
df

词频矩阵处理好,需要构造特征向量为下面模型使用

6、✌ 模型搭建
(1)、✌ 通过KMeans算法进行聚类分群
from sklearn.cluster import KMeans
kms=KMeans(n_clusters=10,random_state=0)
label_kms=kms.fit_predict(df)
label_kms
import numpy as np
words_array=np.array(words)
words_array[label_kms==2]

(2)、✌ 通过DBSCAN算法进行聚类分群
from sklearn.cluster import DBSCAN
dbs=DBSCAN(eps=1,min_samples=3)
label_dbs=dbs.fit_predict(df)
label_dbs

这里我们发现分类出的标签有问题,全部都是-1,说明,全部都是离散点,因为词频处理后,特征过多,导致样本点之间距离较远,从而产生离群点,因此对于新闻文本而言,KMeans算法的聚类效果很好,而DBSCAN的效果较差

这也说明了对于特征较多的数据,KMeans算法的聚类效果要好于DBSCAN算法的聚类效果。

7、✌ 利用余弦相似度进行模型优化
from sklearn.metrics.pairwise import cosine_similarity
df_cs=cosine_similarity(df)
kms_cs=KMeans(n_clusters=10,random_state=0)
label_kms_cs=kms_cs.fit_predict(df_cs)
label_kms_cs

余弦相似性通过测量两个向量的夹角的余弦值来度量它们之间的相似性。0度角的余弦值是1,而其他任何角度的余弦值都不大于1;并且其最小值是-1。从而两个向量之间的角度的余弦值确定两个向量是否大致指向相同的方向。两个向量有相同的指向时,余弦相似度的值为1;两个向量夹角为90°时,余弦相似度的值为0;两个向量指向完全相反的方向时,余弦相似度的值为-1。这结果是与向量的长度无关的,仅仅与向量的指向方向相关。余弦相似度通常用于正空间,因此给出的值为-1到1之间。

当文本出现重复值时,可以将原词频矩阵的数据进行余弦相似度处理,处理后的特征矩阵再带入模型。


目录
相关文章
|
18天前
|
机器学习/深度学习 算法 数据可视化
机器学习的核心功能:分类、回归、聚类与降维
机器学习领域的基本功能类型通常按照学习模式、预测目标和算法适用性来分类。这些类型包括监督学习、无监督学习、半监督学习和强化学习。
20 0
|
3月前
|
机器学习/深度学习 数据采集 算法
【机器学习】K-Means聚类的执行过程?优缺点?有哪些改进的模型?
K-Means聚类的执行过程、优缺点,以及改进模型,包括K-Means++和ISODATA算法,旨在解决传统K-Means算法在确定初始K值、收敛到局部最优和对噪声敏感等问题上的局限性。
60 2
|
3月前
|
机器学习/深度学习 算法 数据挖掘
【机器学习】聚类算法中的距离度量有哪些及公式表示?
聚类算法中常用的距离度量方法及其数学表达式,包括欧式距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、余弦相似度等多种距离和相似度计算方式。
214 1
|
3月前
|
机器学习/深度学习 算法 数据挖掘
【机器学习】Python详细实现基于欧式Euclidean、切比雪夫Chebyshew、曼哈顿Manhattan距离的Kmeans聚类
文章详细实现了基于不同距离度量(欧氏、切比雪夫、曼哈顿)的Kmeans聚类算法,并提供了Python代码,展示了使用曼哈顿距离计算距离矩阵并输出k=3时的聚类结果和轮廓系数评价指标。
62 1
|
5月前
|
机器学习/深度学习 算法 搜索推荐
机器学习中的聚类
**文章摘要:** 本文介绍了聚类算法的基本概念、应用、实现流程和评估方法。聚类是一种无监督学习技术,用于将数据分为相似的组,如K-means、层次聚类、DBSCAN和谱聚类。K-means算法通过迭代优化质心,将数据点分配到最近的簇,直至质心不再变化。模型评估包括误差平方和(SSE)、肘部方法(确定最佳簇数)和轮廓系数法(Silhouette Coefficient),以量化聚类的紧密度和分离度。应用场景涵盖用户画像、广告推荐和图像分割等。在Python的sklearn库中,可以使用KMeans API进行聚类操作。
|
5月前
|
机器学习/深度学习 分布式计算 算法
在机器学习项目中,选择算法涉及问题类型识别(如回归、分类、聚类、强化学习)
【6月更文挑战第28天】在机器学习项目中,选择算法涉及问题类型识别(如回归、分类、聚类、强化学习)、数据规模与特性(大数据可能适合分布式算法或深度学习)、性能需求(准确性、速度、可解释性)、资源限制(计算与内存)、领域知识应用以及实验验证(交叉验证、模型比较)。迭代过程包括数据探索、模型构建、评估和优化,结合业务需求进行决策。
54 0
|
5月前
|
机器学习/深度学习 算法 数据可视化
技术心得记录:机器学习笔记之聚类算法层次聚类HierarchicalClustering
技术心得记录:机器学习笔记之聚类算法层次聚类HierarchicalClustering
44 0
|
5月前
|
机器学习/深度学习 算法 搜索推荐
机器学习聚类算法
聚类算法是无监督学习技术,用于发现数据集中的自然群体,如用户画像、广告推荐等。常见的聚类算法包括K-Means,它基于距离分配样本至簇,适合球形分布;层次聚类则通过合并或分裂形成簇,能发现任意形状的簇;DBSCAN依据密度来聚类,对噪声鲁棒。KMeans API中`sklearn.cluster.KMeans(n_clusters=8)`用于指定簇的数量。评估聚类效果可使用轮廓系数、SSE等指标,Elbow方法帮助选择合适的K值。
|
5月前
|
机器学习/深度学习 算法 数据挖掘
机器学习之聚类——MeanShift算法和图像矢量量化
机器学习之聚类——MeanShift算法和图像矢量量化
52 0
|
5月前
|
机器学习/深度学习 算法 数据挖掘
机器学习之聚类——从教授的等式到凸聚类
机器学习之聚类——从教授的等式到凸聚类
55 0

热门文章

最新文章