NLP Kmeans聚类算法(12)

 基本业务流程:

1. 导入打包的语料集

2. 计算tf-tdf权值:max_features=10000 

3. 应用KMeans算法进行聚类

4. 评估聚类结果

主程序:

  1.  
  2. # -*- coding: utf-8 -*-
  3.  
  4. import sys  
  5. import os 
  6. import numpy as np
  7. #引入Bunch类
  8. from sklearn.datasets.base import Bunch
  9. from sklearn import feature_extraction  
  10. from sklearn.feature_extraction.text import TfidfTransformer  
  11. from sklearn.feature_extraction.text import TfidfVectorizer  
  12. from TextPreprocess import TextPreprocess  # 第一个是文件名,第二个是类名
  13. #导入KMeans算法
  14. from sklearn.cluster import KMeans
  15.  
  16. from text_mining import calculate_result,calculate_accurate
  17.  
  18.  
  19. # 配置utf-8输出环境
  20. reload(sys)
  21. sys.setdefaultencoding(‘utf-8’)
  22.  
  23. # 导入语料集
  24. corpus_set = TextPreprocess()
  25. corpus_set.wordbag_path = “text_corpus1_wordbag/”   #词袋模型路径
  26. corpus_set.trainset_name = “train_set.data”       #词包文件名
  27. corpus_set.stopword_path = “extra_dict/hlt_stop_words.txt” 
  28.  
  29. #从文件导入停用词表
  30. stpwrdlst = corpus_set.getStopword(corpus_set.stopword_path)
  31.  
  32. #从文件导入数据包
  33. corpus_set.load_trainset()
  34. clusters = len(corpus_set.data_set.target_name)
  35. print “共”,clusters,”种类别:”,corpus_set.data_set.target_name
  36.  
  37. # 计算 tf-idf权值
  38. vectorizer = TfidfVectorizer(max_df=0.5, min_df=2, stop_words=stpwrdlst,use_idf=True,max_features=10000)
  39. feat_test = vectorizer.fit_transform(corpus_set.data_set.contents)
  40.  
  41. #应用Kmeans算法 输入词袋向量和类别标签
  42. predict = KMeans(n_clusters = clusters,init=’k-means++’, max_iter=100, n_init=1) 
  43. # 估计聚类结果
  44. predict.fit(feat_test)  
  45.  
  46.  
  47. # 输出聚类结果
  48. calculate_result(corpus_set.data_set.label,predict.labels_); 
  49.  

复制代码

结果输出:

  1.  
  2. 共 10 种类别: [‘automobile’, ‘computer’, ‘education’, ‘entertainment’, ‘estate’, ‘finance’, ‘health’, ‘personnel’, ‘sports’, ‘technology’]
  3. 结果计算:
  4. 精度:0.288
  5. 召回:0.217
  6. f1-score:0.223
  7.  

复制代码


转载自演道,想查看更及时的互联网产品技术热点文章请点击http://go2live.cn