失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 基于Python数据挖掘的文本数据的分类与分析

基于Python数据挖掘的文本数据的分类与分析

时间:2020-02-27 11:39:13

相关推荐

基于Python数据挖掘的文本数据的分类与分析

目录

数据获取 2数据预处理 2建立词典 4生成词向量 6贝叶斯分类器 7SVM 10逻辑回归 12实验总结与反思 14

实验一 文本数据的分类与分析

【实验目的】

1.掌握数据预处理的方法,对训练集数据进行预处理;

2.掌握文本建模的方法,对语料库的文档进行建模;

3.掌握分类算法的原理,基于有监督的机器学习方法,训练文本分类器;

4.利用学习的文本分类器,对未知文本进行分类判别;

5.掌握评价分类器性能的评估方法。

【实验类型】

数据挖掘算法的设计与编程实现。

【实验要求】

1.文本类别数:>=10 类;

2.训练集文档数:>=50000 篇;每类平均 5000 篇。

3.测试集文档数:>=50000 篇;每类平均 5000 篇。

4.分组完成实验,组员数量<=3,个人实现可以获得实验加分。

【实验内容】

利用分类算法实现对文本的数据挖掘,主要包括:

1.语料库的构建,主要包括利用爬虫收集 Web 文档等;

2.语料库的数据预处理,包括文档建模,如去噪,分词,建立数据字典,使用词袋模型或主题模型表达文档等;

注:使用主题模型,如 LDA 可以获得实验加分;

3.选择分类算法(朴素贝叶斯(必做)、SVM/其他等),训练文本分类器,理解所选的分类算法的建模原理、实现过程和相关参数的含义;

4.对测试集的文本进行分类

5.对测试集的分类结果利用正确率和召回率进行分析评价:计算每类正确率、召回率,计算总体正确率和召回率。

【实验分析与总结】

"""SVM建模与评价"""import pickleimport timeimport numpy as npimport pandas as pdfrom scipy.sparse import load_npzfrom sklearn import metricsfrom sklearn.svm import SVCclass_list = {'财经': 'Economics', '房产': 'House', '社会': 'Society', '时尚': 'Fashion', '教育': 'Education','科技': 'Technology', '时政': 'Politics', '体育': 'PE', '游戏': 'Game', '娱乐': 'Entertainment'}coo_test = load_npz('coo_test.npz')# print(coo_test)coo_train = load_npz('coo_train.npz')# print(coo_train)class_arr = np.array([int(i / 5000) for i in range(50000)])model = SVC(kernel='rbf', C=6, gamma=0.001)start = time.time()model.fit(coo_train.tocsr(), class_arr)end = time.time()print('Train time: %s Seconds' % (end - start))start = time.time()pre = model.predict(coo_test.tocsr())end = time.time()print('Test time: %s Seconds' % (end - start))print(pre)with open('pkls/svm_pre.pkl', 'wb') as f:pickle.dump(pre, f)# with open('pkls/svm_pre.pkl', 'rb') as f:#pre = pickle.load(f)# 混淆矩阵C = metrics.confusion_matrix(class_arr, pre)confusion_matrix = pd.DataFrame(C, columns=class_list.values(),index=class_list.values())confusion_matrix.to_csv('Confusion_Matrix_SVM.csv')with open('pkls/confusion_matrix_svm.pkl', 'wb') as f:pickle.dump(C, f)print("混淆矩阵为:\n", C)# 计算准确率(accuracy)accuracy = metrics.accuracy_score(class_arr, pre)print("准确率为:\n", accuracy)# 计算精确率(precision)precision = metrics.precision_score(class_arr, pre, average=None)print("精确率为:\n", precision)print('均值{:.4f}\n'.format(sum(precision) / 10))# 计算召回率(recall)recall = metrics.recall_score(class_arr, pre, average=None)print("召回率为:\n", recall)print('均值{:.4f}\n'.format(sum(recall) / 10))# 计算F1-score(F1-score)F1_score = metrics.f1_score(class_arr, pre, average=None)print("F1值为:\n", F1_score)cp = metrics.classification_report(class_arr, pre)print("---------------分类报告---------------\n", cp)

如果觉得《基于Python数据挖掘的文本数据的分类与分析》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。