首页 > 编程知识 正文

文本分类数据和评价指标的关系,根据文本评分 代码

时间:2023-05-03 13:17:13 阅读:278511 作者:3281

1 中文文本分类数据集THUCNews 1.1 数据说明

  THUCNews是根据新浪新闻RSS订阅频道2005~2011年间的历史数据筛选过滤生成,包含74万篇新闻文档(2.19 GB),均为UTF-8纯文本格式。我们在原始新浪新闻分类体系的基础上,重新整合划分出14个候选分类类别:财经、彩票、房产、股票、家居、教育、科技、社会、时尚、时政、体育、星座、游戏、娱乐。使用THUCTC工具包在此数据集上进行评测,准确率可以达到88.6%。参考链接为:http://thuctc.thunlp.org/#%E4%B8%AD%E6%96%87%E6%96%87%E6%9C%AC%E5%88%86%E7%B1%BB%E6%95%B0%E6%8D%AE%E9%9B%86THUCNews 。

1.2 数据下载方式

  部分数据下载链接为https://download.csdn.net/download/herosunly/16128211。完整数据下载方式为:访问 http://thuctc.thunlp.org/message, 需要提交个人信息、尊重THUNLP资源使用协议,从而获取正确下载地址。

1.3 数据探索

  我们这里以部分数据来进行探索学习。数据下载后包括4个文件夹,分别是cnews.train.txt、cnews.val.txt、cnews.test.txt和cnews.vocab.txt。其中cnews.train.txt是训练集数据,cnews.val.txt是验证集数据、cnews.test.txt是测试集数据,我们需要通过分词然后进行处理。而cnews.vocab.txt是所有数据集中汇集成的词典,每一行表示一个词。细心的同学会发现,除了词、标点符号,还包含了 < P A D > <PAD> <PAD>。 < P A D > <PAD> <PAD>指的是对部分的句子进行填充,从而保证句子中长度差异不大。

2. IMDB英文情感分类数据集 2.1 数据说明

  本数据集是通过评论数据从而分析出个人对电影的喜恶(也可以称为消极和积极的,目标是完成二分类)。数据集总共包含5W条评论,其中2.5W是训练集数据,而2.5W是测试集数据。其中还有5W个未做标记的评论,可用来作无监督学习。

2.2 下载方式

  下载地址为 http://59.80.44.98/ai.stanford.edu/~amaas/data/sentiment/aclImdb_v1.tar.gz ,可直接复制到迅雷进行下载。

2.3 数据探索

数据下载并解压后包括若干个文件和两个文件夹。其中两个文件夹为train和test,train和test中包含neg、pos、unsup三个字文件夹,其中neg对应的是消极的,而pos指的是积极的,unsup是未标记的数据。

3.评价指标 3.1 混淆矩阵


表中TN、FP、FN、TP中第一个字母表示预测是否和实际值相符,正确为T,错误为F。第二个字母表示预测的结果,预测为正样本1用P表示,预测为负样本0用N表示。

3.2 准确率

score:预测正确的样本数占总样本的比例(sklearn中的接口), T N + T P T N + T P + F N + F P frac{TN+TP}{TN+TP+FN+FP} TN+TP+FN+FPTN+TP​。但分类准确率在处理极度倾斜(skewed)的数据时效果不好(如癌症得病了0.1%,即使所有人都预测为健康,我们的分类准确率也为99.9%)。所以后来提出了精准率、召回率、F1 score等指标。

3.3 精确率

precision= T P T P + F P frac{TP}{TP+FP} TP+FPTP​,分母是预测为1且预测对了的数量,分子是所有预测为1的样本数量。从名字理解概念,查准率,查出来为1的样本中准确率是多少。该指标反映了将多数类判错后需要付出的成本。可使用sklearn直接进行计算,代码如下所示:

from sklearn.metrics import precision_scoreprecision_score(y_test, y_pred) 3.4 召回率

recall = T P T P + F N frac{TP}{TP + FN} TP+FNTP​ ,分母是预测为1且预测对了的数量(同精准率),分子是现实中所有为1的样本。sklearn接口为:

from sklearn.metrics import recall_scorerecall_score(y_test, y_pred) 3.5 F1 score

F1 score:有时我们想兼顾查准率和召回率(既不偏好精准率,也不偏好召回率),因此可用二者的调和平均数 1 F 1 = 1 2 ( 1 p r e c i s i o n + 1 r e c a l l ) frac{1}{F1}=frac{1}{2}(frac{1}{precision}+frac{1}{recall}) F11​=21​(precision1​+recall1​),因此 F 1 = 2 p r e c i s i o n ∗ r e c a l l p r e c i s i o n + r e c a l l F1=frac{2precision*recall}{precision+recall} F1=precision+recall2precision∗recall​ 。调和平均数的一个重要特征:只有当两者都很大或很小时,调和平均数才会很大或很小,只要有一个很小,就会大大拉低结果。sklearn接口为

from sklearn.metrics import f1_scoref1_score(y_test, y_pred) 3.6 PR曲线

上面的F1_score兼顾了精准率和召回率,但是这两个指标本身是矛盾的,提升一个必然会降低另一个。绘制曲线代码为:

# 超参数-precision & 超参数-recall曲线from sklearn.datasets import load_breast_cancerfrom sklearn.model_selection import train_test_splitfrom sklearn.tree import DecisionTreeClassifierfrom sklearn.metrics import precision_scorefrom sklearn.metrics import recall_scoreimport pandas as pdimport numpy as npdata = load_breast_cancer()X_train, X_test, Y_train, Y_test = train_test_split(data.data, data.target, test_size = 0.4, random_state = 555)precision = []recall = []for i in range(1, 10): clf = DecisionTreeClassifier(max_depth = i) clf.fit(X_train, Y_train) pred = clf.predict(X_test) precision.append(precision_score(Y_test, pred)) recall.append(recall_score(Y_test, pred)) import matplotlib.pyplot as pltplt.plot(list(range(1, 10)), precision, label = 'precision')plt.plot(list(range(1, 10)), recall, label = 'recall')plt.legend()plt.show() 3.7 ROC曲线和AUC


ROC曲线的横轴是FPR,纵轴是TPR。FPR(假正率)为FP(预测为1,但是预测错了的数量,误报)除以真实值为0的样本数量。绘制ROC曲线的方法同P-R曲线,可以自己手绘,也可以调用sklearn。TPR为召回率recall。

AUC即ROC曲线的面积,AUC代表ROC曲线越接近左上角,模型就越好。

3.8 学习曲线

  Plots relating performance to experience are widely used in machine learning. Performance is the error rate or accuracy of the learning system, while experience may be the number of training examples used for learning or the number of iterations used in optimizing the system model parameters.[17] The machine learning curve is useful for many purposes including comparing different algorithms,[18] choosing model parameters during design,[19] adjusting optimization to improve convergence, and determining the amount of data used for training.

4. 参考链接为

https://blog.csdn.net/Stephen_shijun/article/details/83059863
https://blog.csdn.net/u014696921/article/details/74435229

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。