足球遊戲論壇資料分析--簡單粗暴的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 ''
View Code
運行結果
Silhouette Coefficient(輪廓係數): 0.137Cluster 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開始步入穩定點,提升不大.
最後,附上個特徵向量經降維後作的分類散佈圖