NLP-learning-2

**

Task2

**

任务描述

  • 数据集下载探索模块:IMDB数据集(英文)和THUCNews数据集(中文)
  1. 数据集
    数据集:中、英文数据集各一份
    THUCNews中文数据集:https://pan.baidu.com/s/1hugrfRu 密码:qfud
    IMDB英文数据集: IMDB数据集 Sentiment Analysis
  2. IMDB数据集下载和探索模块及指标学习模块
  3. THUCNews数据集下载和探索
  4. 学习召回率、准确率、ROC曲线、AUC、PR曲线这些基本概念

参考资料
TensorFlow官方教程:影评文本分类 | TensorFlow (https://tensorflow.google.cn/tutorials/keras/basic_text_classification)
科赛 - Kesci.com (https://www.kesci.com/home/project/5b6c05409889570010ccce90)
博客中的数据集部分和预处理部分:CNN字符级中文文本分类-基于TensorFlow实现 - 一蓑烟雨 - CSDN博客 (https://blog.csdn.net/u011439796/article/details/77692621)
text-classification-cnn-rnn/cnews_loader.py at mas…(https://github.com/gaussic/text-classification-cnn-rnn/blob/master/data/cnews_loader.py)
机器学习之类别不平衡问题 (2) —— ROC和PR曲线_慕课手记(https://www.imooc.com/article/48072)、

1 数据集下载

THUCNews中文文本分类数据集
  部分数据下载链接为https://pan.baidu.com/s/1hugrfRu 密码:qfud。完整数据下载方式为:访问 http://thuctc.thunlp.org/message, 需要提交个人信息、尊重THUNLP资源使用协议,从而获取正确下载地址。

IMDB英文情感分类数据集
  下载地址为 http://59.80.44.98/ai.stanford.edu/~amaas/data/sentiment/aclImdb_v1.tar.gz ,可直接通过迅雷进行下载。

2 IMDB探索模块及指标学习模块

2.1 数据说明

  该数据集是通过用户的个人评论数据分析出个人对电影的喜恶(亦即消极和积极,目标是完成二元分类)。数据集共包含5万条评论,其中2.5万条是训练集数据,另外2.5万条是测试集数据。其中还有5万个未做标记的评论,可用来作无监督学习。

2.2 探索模块

  数据包包含若干个文件和两个文件夹。文件夹train和test中包含neg、pos、unsup三个子文件夹,分别对应的是消极的,积极的,和未标记的数据。

3 THUCNews数据集探索

3.1 数据说明

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

3.2 探索模块

  数据包包含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是所有数据集中汇集成的词典,每一行表示一个词。代码写于GitHub

4 学习召回率、准确率、ROC曲线、AUC、PR曲线

预:混淆矩阵
在这里插入图片描述
  第一个字母表示预测是否和实际值相符,正确为T,错误为F。第二个字母表示预测的结果,预测为正样本1用P表示,预测为负样本0用N表示。

4.1 召回率

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

from sklearn.metrics import recall_score
recall_score(y_test, y_pred)
4.2 准确率

s c o r e = T N + T P T N + T P + F N + F P score= \frac{TN + TP}{TN + TP + FN + FP} score=TN+TP+FN+FPTN+TP
  预测正确的样本数占总样本的比例,但分类准确率在处理极度倾斜(skewed)的数据时效果不好。

4.3 F1 score

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{2*precision∗recall}{precision+recall} F1=precision+recall2precisionrecall
  有时我们想兼顾查准率和召回率(既不偏好精准率,也不偏好召回率),因此可用二者的调和平均数。调和平均数的一个重要特征:只有当两者都很大或很小时,调和平均数才会很大或很小,只要有一个很小,就会大大拉低结果。sklearn接口为:

from sklearn.metrics import f1_score
f1_score(y_test, y_pred)
4.4 PR曲线

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

# 超参数-precision & 超参数-recall曲线
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import precision_score
from sklearn.metrics import recall_score

import pandas as pd
import numpy as np

data = 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 plt

plt.plot(list(range(1, 10)), precision, label = 'precision')
plt.plot(list(range(1, 10)), recall, label = 'recall')
plt.legend()
plt.show()

4.5 ROC曲线

  ROC曲线的横轴是FPR,纵轴是TPR。FPR(假正率)为FP(预测为1,但是预测错了的数量)除以真实值为0的样本数量。绘制ROC曲线的方法同P-R曲线,可以调用sklearn。TPR为召回率recall。
  AUC即ROC曲线的面积,AUC代表ROC曲线越接近左上角,模型就越好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值