足球游戏论坛数据分析--简单粗暴的贝叶斯

前些日子入了PS4的某著名游戏2017, 寻小妖刷ML中.  不得不说刚开始的时候,涛哥坤哥的解说感觉颇为带感.  一个月后...还是关音量吧,解说词太贫乏了

在寻小妖的过程中, 突发奇想看看某著名论坛的数据有没有什么特别的地方,于是scrapy走起...

被服务器ban了几次后, 扒拉下来2w多主贴,30多w回帖存入sqlite数据库

[数据清洗]

使用xpath清洗HTML代码, 筛出板块,帖子内容,作者,时间等等等

删掉爬虫乱跑其他板块扒拉下来的帖子

这第一步清洗说起来简单, 倒也花了不少时间. 结果剩下的如下

sqladmin不支持中文我也没办法 -_-!

[分析]

说实话刚拿到这些数据,我是一脸矇逼的, 当初匆匆上马scrapy, 完全没考虑到分析什么, 数据也抓得不多. 算了,看看能做什么吧, 懒得再跑爬虫,省电

首先看到, 部分帖子作者给标上了主题, 如[PS4][XBOX360], 统计一下各主机的帖子吧:

select category, count(0) from articles group by category

结果

其他是什么鬼? 删了 :-(

看到大量空的category, 我上去论坛看了一下, 原来大部分作者发帖都是懒得选择主题的, 象"pes2017真的很棒一个**老粉自白"这种, 自称老粉的绝壁是PS主机用户啊.

那就尝试一下把category是空的帖子做下分类吧.

文档分类, 词语向量跑不掉, jieba分词走起

conn = sqlite3.connect(‘expData2.db‘)
conn.text_factory = str
rows = conn.execute(‘select * from articles ‘).fetchall()
conn.close()

rmvList = [‘x‘,‘y‘,‘uj‘]  #移除部分无用词

f1=codecs.open(‘forum_all.txt‘,‘w‘,‘utf-8‘)
j = 1
for row in rows:
     wList = ‘‘
     words = row[2] + row[5]
     keys = jieba.posseg.cut(words)
     for k in keys:
          if k.flag not in rmvList:
               wList += ‘ ‘ + k.word
     f1.write(wList)
     f1.write(‘\n‘)

     j += 1
     if j%1000 ==0:
          print ‘Write %dk records...‘ %(j/1000)

f1.close()
print ‘Completed.‘

根据category,我选了200贴PS的, 180贴Xbox系列的, 人肉选了200贴讨论PC的帖子经jieba分词后, 存成txt文件作为训练集,结果如下:

训练测试结果有9+%的准确率,有点偏高, 不管了, 先把所有数据来一发分类看看

def classNB_txt():
    C, X, Y = loadDataSet()
    print ‘Building trainning matrix....‘
    trainMat1d = []
    trainMat2d = []
    for postinDoc in X:
        ary = array(setOfWords2Vec(C, postinDoc))
        trainMat2d.append(ary)
    print ‘Building trainning matrix completed‘

    clf = GaussianNB().fit(trainMat2d, Y)
    f = codecs.open(‘forum_all.txt‘, ‘r‘)
    #fw = codecs.open(‘forum_all_result.txt‘, ‘w‘)
    lines = f.readlines()
    totalNum = len(lines)
    j = 1

    thisDoc = []
    for line in lines:
        ar = line.split(‘ ‘)
        thisDoc.append( setOfWords2Vec(C, ar))

    aryDoc = np.array(thisDoc)
    r = clf.predict(aryDoc)
    f.close()
    print ‘Completed.‘
    l = list(r)
    #ary = [[x] for x in l ]
    #print ary
    print ‘XB: %d‘ %(l.count(1))
    print ‘PS: %d‘ % (l.count(2))
    print ‘PC: %d‘ % (l.count(3))

最后结果

Building trainning matrix....
Building trainning matrix completed
Completed.
XB: 7223
PS: 1943
PC: 17692

Process finished with exit code 0

结果颇为意外, PS/XBox/PC三大主机的主题贴比例竟然接近1:4:9.

如果说它合理无非以下两个原因:

  • 在上一代主机战争中, Xbox360是胜者. 而且关键的是, 有破解
  • PC版虽然因为引擎的原因画面不如主机版,但是PC版便宜啊, 用户多啊. 而且关键的是, 有破解⊙▂⊙

不合理也是可能的:

  • 准备训练数据不精准,而且并没有筛选关键词, 屏蔽stopwords
  • 相当大一部分玩家在论坛上只回复不发主题, 而我只考虑了主贴,没有算回贴
  • 数据太片面

综上,这个统计只能说是针对某个板块的统计。

时间: 2025-01-15 18:42:14

足球游戏论坛数据分析--简单粗暴的贝叶斯的相关文章

足球游戏论坛数据分析--简单粗暴的K均值聚类

在<<足球游戏论坛数据分析--简单粗暴的贝叶斯>>中尝试了贴标签后,一直觉得结果无法接受, 慢慢回想, 其实选择的算法是错误的,原因有 论坛帖子分类并非就是PC/PS/XBOX这么简单 即使是作者自己贴的标签,也存在挂羊头的可能性 既然没法简单的给帖子分类,那么就尝试一下聚类算法看看有没有发现: #事先已经把分好词的所有文本存成一个文件,没有事先分类 f = codecs.open('forum_all.txt', 'r', 'utf-8') words_full = f.read

贝叶斯方法

学习资料:http://mindhacks.cn/2008/09/21/the-magical-bayesian-method/ 概率论只不过是把常识用数学公式表达了出来. ——拉普拉斯 记得读本科的时候,最喜欢到城里的计算机书店里面去闲逛,一逛就是好几个小时:有一次,在书店看到一本书,名叫贝叶斯方法.当时数学系的课程还没有学到概率统计.我心想,一个方法能够专门写出一本书来,肯定很牛逼.后来,我发现当初的那个朴素归纳推理成立了——这果然是个牛逼的方法. ——题记 目录 0. 前言 1. 历史  

数学之美番外篇:平凡而又神奇的贝叶斯方法

转载自:http://mindhacks.cn/2008/09/21/the-magical-bayesian-method/ 概率论只不过是把常识用数学公式表达了出来. ——拉普拉斯 记得读本科的时候,最喜欢到城里的计算机书店里面去闲逛,一逛就是好几个小时:有一次,在书店看到一本书,名叫贝叶斯方法.当时数学系的课程还没有学到概率统计.我心想,一个方法能够专门写出一本书来,肯定很牛逼.后来,我发现当初的那个朴素归纳推理成立了——这果然是个牛逼的方法. ——题记 目录 0. 前言 1. 历史   

统计学习方法 -&gt; 朴素贝叶斯算法

需要知道的是在什么时候可以用朴素贝叶斯算法:需要保证特征条件独立. 主要过程是学习输入和输出的联合概率分布. 预测的时候,就可以根据输入获得对打后验概率对应的输出y. 先验概率:已知输出,求输入.后验概率相反. 简单来说朴素贝叶斯算法,就是在对样本进行学习之后,到了需要做决策的时候,给定x,给出最大概率的y.这个本质上就是一个典型的后验概率模型.不过在该模型的算法推到上,还用到了先验概率的计算.但注意:最终朴素贝叶斯就是一种后验概率模型求P(y|x). 后验概率模型有一个好处,相当于期望风险最小

【转载】数学之美番外篇:平凡而又神奇的贝叶斯方法

数学之美番外篇:平凡而又神奇的贝叶斯方法 BY 刘未鹏 – SEPTEMBER 21, 2008POSTED IN: 数学, 机器学习与人工智能, 计算机科学 概率论只不过是把常识用数学公式表达了出来. ——拉普拉斯 记得读本科的时候,最喜欢到城里的计算机书店里面去闲逛,一逛就是好几个小时:有一次,在书店看到一本书,名叫贝叶斯方法.当时数学系的课程还没有学到概率统计.我心想,一个方法能够专门写出一本书来,肯定很牛逼.后来,我发现当初的那个朴素归纳推理成立了——这果然是个牛逼的方法. ——题记 目

平凡而又神奇的贝叶斯方法

转自 http://mindhacks.cn/2008/09/21/the-magical-bayesian-method/ 数学之美番外篇:平凡而又神奇的贝叶斯方法 概率论只不过是把常识用数学公式表达了出来. --拉普拉斯 记得读本科的时候,最喜欢到城里的计算机书店里面去闲逛,一逛就是好几个小时:有一次,在书店看到一本书,名叫贝叶斯方法.当时数学系的课程还没有学到概率统计.我心想,一个方法能够专门写出一本书来,肯定很牛逼.后来,我发现当初的那个朴素归纳推理成立了--这果然是个牛逼的方法. --

平凡而又神奇的的贝叶斯方法

平凡而又神奇的贝叶斯方法 概率论只不过是把常识用数学公式表达了出来.    —拉普拉斯 目录 0. 前言  1. 历史      1.1 一个例子:自然语言的二义性      1.2 贝叶斯公式  2. 拼写纠正  3. 模型比较与贝叶斯奥卡姆剃刀      3.1 再访拼写纠正      3.2 模型比较理论(Model Comparasion)与贝叶斯奥卡姆剃刀(Bayesian Occam’s Razor)      3.3 最小描述长度原则      3.4 最优贝叶斯推理  4. 无处

[转]数学之美番外篇:平凡而又神奇的贝叶斯方法

原文转自:http://mindhacks.cn/2008/09/21/the-magical-bayesian-method/ 概率论只不过是把常识用数学公式表达了出来.——拉普拉斯 记得读本科的时候,最喜欢到城里的计算机书店里面去闲逛,一逛就是好几个小时:有一次,在书店看到一本书,名叫贝叶斯方法.当时数学系的课程还没有学到概率统计.我心想,一个方法能够专门写出一本书来,肯定很牛逼.后来,我发现当初的那个朴素归纳推理成立了——这果然是个牛逼的方法. ——题记 目录 0. 前言 1. 历史 1.

机器学习-贝叶斯算法

0. 前言 这是一篇关于贝叶斯方法的科普文,我会尽量少用公式,多用平白的语言叙述,多举实际例子.更严格的公式和计算我会在相应的地方注明参考资料.贝叶斯方法被证明是非常 general 且强大的推理框架,文中你会看到很多有趣的应用. 1. 历史 托马斯·贝叶斯(Thomas Bayes)同学的详细生平在这里.以下摘一段 wikipedia 上的简介: 所谓的贝叶斯方法源于他生前为解决一个"逆概"问题写的一篇文章,而这篇文章是在他死后才由他的一位朋友发表出来的.在贝叶斯写这篇文章之前,人们