一、数据竞赛简介
1、任务
建立模型通过长文本数据正文(article),预测文本对应的类别(class)
2、数据
传送门:链接: https://pan.baidu.com/s/11AOOn0xlv0TZjGeFfRc3Rw 提取码: 58r9
数据包含2个csv文件:
- train_set.csv:此数据集用于训练模型,每一行对应一篇文章。文章分别在“字”和“词”的级别上做了脱敏处理。共有四列:
- 第一列是文章的索引(id),
- 第二列是文章正文在“字”级别上的表示,即字符相隔正文(article);
- 第三列是在“词”级别上的表示,即词语相隔正文(word_seg);
- 第四列是这篇文章的标注(class)。
- 注:每一个数字对应一个“字”,或“词”,或“标点符号”。“字”的编号与“词”的编号是独立的!
- test_set.csv:此数据用于测试。数据格式同train_set.csv,但不包含class。
- 注:test_set与train_test中文章id的编号是独立的。
3、评分标准
评分算法:binary-classification
采用各个品类F1指标的算术平均值,它是Precision 和 Recall 的调和平均数。
⟨ F 1 ⟩ = 1 n ∑ i n F 1 i = 1 n ∑ i n 2 ⋅ P i ⋅ R i P i + R i \langle F1\rangle=\frac{1}{n}\sum_i^nF1_i=\frac{1}{n}\sum_i^n\frac{2\cdot P_i\cdot R_i}{P_i+ R_i} ⟨F1⟩=n1i∑nF1i=n1i∑nPi+Ri2⋅Pi⋅Ri
其中, P i P_i Pi 是表示第 i i i 个种类对应的Precision, R i R_i Ri 是表示第 i i i 个种类对应Recall。
二、数据读取
# 导入相关包
import pandas as pd
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
# 数据预处理
df_train = pd.read_csv("./new_data/train_set.csv") # 使用read_csv方法 导入训练集
df_test = pd.read_csv("./new_data/test_set.csv") # 用read_csv方法 导入测试集
X = df_train.drop(['id','class'], axis=1)
y = df_train['class']
print(df_train.head(10))
print('-------------------------')
print(X.head(10))
print('-------------------------')
# 划分数据集
X_train, X_valid, y_train, y_valid = train_test_split(X, y, test_size=0.2, random_state=2019)
# 划分后数据集概况
print('Data Servey--Train data: {}'.format(X_train.info()))
print('------------' * 2)
print('Data Servey--Validation data: {}'.format(X_valid.info()))
输出结果
id ... class
0 0 ... 14
1 1 ... 3
2 2 ... 12
3 3 ... 13
4 4 ... 12
5 5 ... 13
6 6 ... 1
7 7 ... 10
8 8 ... 10
9 9 ... 19
[10 rows x 4 columns]
-------------------------
article word_seg
0 7368 1252069 365865 755561 1044285 129532 1053... 816903 597526 520477 1179558 1033823 758724 63...
1 581131 165432 7368 957317 1197553 570900 33659... 90540 816903 441039 816903 569138 816903 10343...
2 7368 87936 40494 490286 856005 641588 145611 1... 816903 1012629 957974 1033823 328210 947200 65...
3 299237 760651 299237 887082 159592 556634 7489... 563568 1239563 680125 780219 782805 1033823 19...
4 7368 7368 7368 865510 7368 396966 995243 37685... 816903 816903 816903 139132 816903 312320 1103...
5 7368 1160791 299237 1238054 569999 1044285 117... 816903 669476 21577 520477 1004165 4184 616471...
6 893673 7368 836872 674898 231468 856005 105964... 277781 816903 1098157 986174 1033823 780491 10...
7 1122654 125310 907560 1172361 979583 983951 12... 289186 640942 363388 585102 261174 1217680 520...
8 793790 599682 1223643 1030656 569999 178976 45... 1257015 966562 1054308 599826 811205 520477 28...
9 7368 1120647 360394 79747 1140778 472252 7368 ... 816903 266069 1226448 1276450 816903 769051 12...
-------------------------
<class 'pandas.core.frame.DataFrame'>
Int64Index: 81821 entries, 6483 to 40008
Data columns (total 2 columns):
article 81821 non-null object
word_seg 81821 non-null object
dtypes: object(2)
memory usage: 1.9+ MB
Data Servey--Train data: None
------------------------
<class 'pandas.core.frame.DataFrame'>
Int64Index: 20456 entries, 82049 to 68944
Data columns (total 2 columns):
article 20456 non-null object
word_seg 20456 non-null object
dtypes: object(2)
memory usage: 479.4+ KB
Data Servey--Validation data: None