目录
4.1、CountVectors+RidgeClassifier
4.3、MultinomialNB +CountVectors
1、读取数据
import pandas as pd
import seaborn as sns
# nrows=100 设置读取100行数据
train_df = pd.read_csv('新建文件夹/天池—新闻文本分类/train_set.csv', sep='\t')
print(train_df.head())
label text 0 2 2967 6758 339 2021 1854 3731 4109 3792 4149 15... 1 11 4464 486 6352 5619 2465 4802 1452 3137 5778 54... 2 3 7346 4068 5074 3747 5681 6093 1777 2226 7354 6... 3 2 7159 948 4866 2109 5520 2490 211 3956 5520 549... 4 3 3646 3055 3055 2490 4659 6065 3370 5814 2465 5...
查看句子长度
#句子长度分析
train_df['text_len'] = train_df['text'].apply(lambda x: len(x.split(' ')))
print(train_df['text_len'].describe())
#平均长度907.207110
count 200000.000000 mean 907.207110 std 996.029036 min 2.000000 25% 374.000000 50% 676.000000 75% 1131.000000 max 57921.000000 Name: text_len, dtype: float64
2、可视化
2.1、新闻的字数分布
由图可知,字数 10000以上的新闻文本是极少数,小于5000
import matplotlib.pyplot as plt
_ = plt.hist(train_df['text_len'], bins=200)
plt.xlabel('Text char count')
plt.title("Histogram of char count")
plt.show()
2.2、新闻文本类别统计
train_df['label'].value_counts().plot(kind = 'bar')
plt.title('News class count')
plt.xlabel('category')
plt.show()
数据集中标签的对应的关系如下:{‘科技’: 0, ‘股票’: 1, ‘体育’: 2, ‘娱乐’: 3, ‘时政’: 4, ‘社会’: 5, ‘教育’: 6, ‘财经’: 7, ‘家居’: 8, ‘游戏’: 9, ‘房产’: 10, ‘时尚’: 11, ‘彩票’: 12, ‘星座’: 13}
- 由图知,科技,股票,体育类别的新闻占比最多