K-means文本聚类

理论介绍

Kmeans算法

k-means算法又称k均值,是一种无监督的机器学习方法,通过多次求均值实现聚类。即无需知道所要搜寻的目标,而是直接通过算法来得到数据的共同特征。如图所示,通过找到合适的K值和合适的中心点,来实现目标的聚类。

在这里插入图片描述
其具体算法思想实现过程如下:
1.指定簇的个数
2.随机选取K个中心点
3.将每条记录归到离它最近的中心点所在的簇中
4.以各个簇的记录均值的中心点取代之前的中心点
5.不断迭代,直到收敛

优化目标

k-means的损失函数是平方误差:
  其中表示第k个簇,表示第k个簇的中心点,是第k个簇的损失函数,表示整体的损失函数。优化目标就是选择恰当的记录归属方案,使得整体的损失函数最小。

K值选取

k-meams算法的能够保证收敛,但不能保证收敛于全局最优点,当初始中心点选取不好时,只能达到局部最优点,整个聚类的效果也会比较差。可以采用以下方法选取k-means中心点:
  1、选择彼此距离尽可能远的那些点作为中心点;
  2、先采用层次进行初步聚类输出k个簇,以簇的中心点的作为k-means的中心点的输入。
  3、多次随机选择中心点训练k-means,选择效果最好的聚类结果

k-means的误差函数有一个很大缺陷,就是随着簇的个数增加,误差函数趋近于0,最极端的情况是每个记录各为一个单独的簇,此时数据记录的误差为0,但是这样聚类结果并不是我们想要的,因此在数据训练过程中需要选取合适的K值。

实验过程

1.数据处理

实验数据集是从新浪新闻THUCNews中筛选的150篇新闻,分为三类:体育,星座,游戏。
读取数据集。按文件夹遍历每篇文章,把每一条新闻进行分词,保存为wordlist,所有记录保存在datalist,所有类别保存在label.

        for file in files:
            with open(os.path.join(new_floder_path,file),mode="r",encoding="utf-8") as fp:
                Word = fp.read(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值