当前位置:   article > 正文

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

数据挖掘文本分类

目录

  1. 数据获取 2
  2. 数据预处理 2
  3. 建立词典 4
  4. 生成词向量 6
  5. 贝叶斯分类器 7
  6. SVM 10
  7. 逻辑回归 12
  8. 实验总结与反思 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 pickle
import time

import numpy as np
import pandas as pd
from scipy.sparse import load_npz
from sklearn import metrics
from sklearn.svm import SVC

class_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)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/713367
推荐阅读
相关标签
  

闽ICP备14008679号