足球游戏论坛数据分析--简单粗暴的K均值聚类
在<<足球游戏论坛数据分析--简单粗暴的贝叶斯>>中尝试了贴标签后,一直觉得结果无法接受, 慢慢回想, 其实选择的算法是错误的,原因有
- 论坛帖子分类并非就是PC/PS/XBOX这么简单
- 即使是作者自己贴的标签,也存在挂羊头的可能性
既然没法简单的给帖子分类,那么就尝试一下聚类算法看看有没有发现:
#事先已经把分好词的所有文本存成一个文件,没有事先分类
f = codecs.open('forum_all.txt', 'r', 'utf-8')
words_full = f.readlines()
f.close() true_k = 5 #事先预设分成5类 vectorizer = TfidfVectorizer(max_df=0.5, max_features=1000,
min_df=2)
transformer = TfidfTransformer()
td = vectorizer.fit_transform(words_full)
tfidf = transformer.fit_transform(td)
word = np.array(vectorizer.get_feature_names())
km = KMeans(n_clusters=true_ke, init='k-means++', max_iter=200, n_init=1)
km.fit(td)
print(u"Silhouette Coefficient(轮廓系数): %0.3f"
% metrics.silhouette_score(td, km.labels_, sample_size=5000))
order_centroids = km.cluster_centers_.argsort()[:, ::-1] terms = vectorizer.get_feature_names() for i in range(true_ke): #输出每个分类头10个特征词
for ind in order_centroids[i, :10]:
print ' %s' % terms[ind],
print ''
运行结果
Silhouette Coefficient(轮廓系数): 0.137
Cluster 0: 1634 posts
显卡 识别 独立 安装 如何 方法 教程 最后 破解版 reloaded
Cluster 1: 4388 posts
2014 evolution soccer 推荐 pro 论坛 首发 dlc3 下载 破解版
Cluster 2: 1677 posts
汇总 资源 dlc6 22 10 更新 pes2014 分享 谢谢 支持
Cluster 3: 7872 posts
wecn 发布 正式 pes2016 patch v2 简体中文 汉化 v1 补丁
Cluster 4: 11287 posts
pes2014 疑难解答 补丁 更新 球员 10 球场 分享 pes2016 谢谢
从这个分类结果来看,我抓取的论坛板块主要讨论的是:
- 能/爽玩游戏的电脑配置, 即PC版游戏
- "你懂的"游戏用户还是不少,正版化依然任重而道远
- 过半数的讨论(分类3和4)是游戏的各路补丁,老司机都知道,在版权问题这个点上,FIFA无敌
- 颇为意外的是, 2014/2016竟然是热门版本, 2015毫无存在感
- 我现在有点怀疑我的爬虫花了大量时间在扒PC板块的帖子 -_-b
PS, 分类数5其实只是个随便定下的值. 之所以最终选5, 只是在测试了从3到12的分类后, 发现轮廓系数在5开始步入稳定状态,提升不大.
最后,附上个特征向量经降维后作的分类散点图
足球游戏论坛数据分析--简单粗暴的K均值聚类的更多相关文章
- 5-Spark高级数据分析-第五章 基于K均值聚类的网络流量异常检测
据我们所知,有‘已知的已知’,有些事,我们知道我们知道:我们也知道,有 ‘已知的未知’,也就是说,有些事,我们现在知道我们不知道.但是,同样存在‘不知的不知’——有些事,我们不知道我们不知道. 上一章 ...
- 【转】算法杂货铺——k均值聚类(K-means)
k均值聚类(K-means) 4.1.摘要 在前面的文章中,介绍了三种常见的分类算法.分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别与之对应.但是很多时 ...
- 机器学习实战5:k-means聚类:二分k均值聚类+地理位置聚簇实例
k-均值聚类是非监督学习的一种,输入必须指定聚簇中心个数k.k均值是基于相似度的聚类,为没有标签的一簇实例分为一类. 一 经典的k-均值聚类 思路: 1 随机创建k个质心(k必须指定,二维的很容易确定 ...
- 机器学习理论与实战(十)K均值聚类和二分K均值聚类
接下来就要说下无监督机器学习方法,所谓无监督机器学习前面也说过,就是没有标签的情况,对样本数据进行聚类分析.关联性分析等.主要包括K均值聚类(K-means clustering)和关联分析,这两大类 ...
- K均值聚类
聚类(cluster)与分类的不同之处在于, 分类算法训练过程中样本所属的分类是已知的属监督学习. 而聚类算法不需要带有分类的训练数据,而是根据样本特征的相似性将其分为几类,又称为无监督分类. K均值 ...
- 探索sklearn | K均值聚类
1 K均值聚类 K均值聚类是一种非监督机器学习算法,只需要输入样本的特征 ,而无需标记. K均值聚类首先需要随机初始化K个聚类中心,然后遍历每一个样本,将样本归类到最近的一个聚类中,一个聚类中样本特征 ...
- 机器学习之K均值聚类
聚类的核心概念是相似度或距离,有很多相似度或距离的方法,比如欧式距离.马氏距离.相关系数.余弦定理.层次聚类和K均值聚类等 1. K均值聚类思想 K均值聚类的基本思想是,通过迭代的方法寻找K个 ...
- k均值聚类算法原理和(TensorFlow)实现
顾名思义,k均值聚类是一种对数据进行聚类的技术,即将数据分割成指定数量的几个类,揭示数据的内在性质及规律. 我们知道,在机器学习中,有三种不同的学习模式:监督学习.无监督学习和强化学习: 监督学习,也 ...
- 聚类之K均值聚类和EM算法
这篇博客整理K均值聚类的内容,包括: 1.K均值聚类的原理: 2.初始类中心的选择和类别数K的确定: 3.K均值聚类和EM算法.高斯混合模型的关系. 一.K均值聚类的原理 K均值聚类(K-means) ...
随机推荐
- 相克军_Oracle体系_随堂笔记004-shared pool
本章主要阐述SGA中的shared pool. Shared pool { 1.free 2.library cache(缓存sql语句及其执行计划) 3.row cache(数据字典缓存) } ...
- ODBC database driver for Go:Go语言通过ODBC 访问SQL server
Go语言通过ODBC 访问SQL server,这里需要用到go-odbc库,开源地址::https://github.com/weigj/go-odbc 一.驱动安装 在cmd中打开GOPATH: ...
- Objective-C快速上手
最近在开发iOS程序,这篇博文的内容是刚学习Objective-C时做的笔记,力图达到用最短的时间了解OC并使用OC.Objective-C是OS X 和 iOS平台上面的主要编程语言,它是C语言的超 ...
- Xml的简单介绍和Xml格式
XML 被设计用来结构化.存储以及传输信息.HTML 被设计用来显示数据. 1.XML是什么? 1)XML 指可扩展标记语言(EXtensible Markup Language) 2)XML 是一种 ...
- HttpWebRequest的GetResponse或GetRequestStream偶尔超时 + 总结各种超时死掉的可能和相应的解决办法
[问题] 用C#模拟网页登陆,其中去请求几个页面,会发起对应的http的请求request,其中keepAlive设置为true,提交请求后,然后会有对应的response: resp = (Http ...
- this上下文,以及通过call 、apply 实现继承
上下文:this关键字通常指向当前函数的拥有者,把拥有者叫做执行上下文. this代表函数运行时自动生成的内部对象,只能在函数内部使用. 构造函数中的this 指 构造函数的实例对象.javascri ...
- REST服务介绍二
之前一篇文章写过REST服务介绍, 今天再次来自回顾一下. REST是一种架构风格. 首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是 HTTP 规范 ...
- 5、ASP.NET MVC入门到精通——NHibernate代码映射
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 上一篇NHibernate学习笔记—使用 NHibernate构建一个ASP.NET MVC应用程序 使用的是xml进行orm映射,那么这一 ...
- CSS Hack解决浏览器IE部分属性兼容性问题
1.Css Hack 不同厂商的流览器或某浏览器的不同版本(如IE6-IE11,Firefox/Safari/Opera/Chrome等),对CSS的支持.解析不一样,导致在不同浏览器的环境中呈现出不 ...
- JAVAScript柯里化、部分应用参数终极理解
一.柯里化 在定义柯里化.部分应用参数的概念前,首先必须对闭包有深入的了解和定义,闭包一句话说清楚:函数返回值为函数. 柯里化的定义:将多参函数分解为按步骤接受单个参数的函数,如下代码: var mo ...