首先明确任务:
建立模型通过长文本数据正文(article),预测文本对应的类别(class)
确定好任务之后我们先对数据进行读取,DataFrames的head()方法,看看数据的前五行是如何的
import sys
assert sys.version_info >= (3, 5)
import sklearn
assert sklearn.__version__ >= "0.20"
import numpy as np
import os
training_data= pd.read_csv('./train_set.csv', nrows=5000)
#training_data = pd.read_csv(csv_path, nrows=5000)
training_data.head()
通过上面得知,数据集就只有“id”,“article”,“word_seg”,“class”等四个属性,其中特征就是“article”,和“word_reg” 。
然后我们可以查看官网,文章分别在“字”和“词”的级别上做了脱敏处理。共有四列:
第一列是文章的索引(id),第二列是文章正文在“字”级别上的表示,即字符相隔正文(article);第三列是在“词”级别上的表示,即词语相隔正文(word_seg);第四列是这篇文章的标注(class)。
注:每一个数字对应一个“字”,或“词”,或“标点符号”。“字”的编号与“词”的编号是独立的!
这样我们可以再采用info()的方法来快速获取数据集的简单描述,特别是总行数,每个属性的类型和非空值的数量
training_data.info()
可以看到没有什么缺失值,我们可以看到article和word_seg这些特征的输入都是字符串的
我们也看看数据的数值属性的信息
training_data.describe()
%matplotlib inline
import matplotlib.pyplot as plt
training_data['class'].hist(bins=50, figsize=(10,5))
plt.show()
可以看到对应的类别是1-19,而且分布没有太严重
然后对数据进行训练集和测试集划分
from sklearn.model_selection import train_test_split
train_set,val_set = train_test_split(training_data, test_size = 0.2, random_state=42)
里面的特征之前没学习过,现在还没很好的处理思路