前言
昨天我们了解了比赛的基本内容以及一些思路,下载了比赛的数据,今天我们就来探索一下我们现有的数据。
1. 数据概况
通过网站的链接,我们下载到了三个数据——train_set/test_a/test_a_sample这三个数据的csv文件,接下来我们来看看这三个数据长啥样。
1 | # 导入工具包 |
结果如下:
2. 简单探索
- 文本长度统计
1
2train_set['text_len'] = train_set['text'].apply(lambda x: len(x.split(' ')))
print(train_set['text_len'].describe())
- 文本长度直方图
1
2
3
4
5
6%matplotlib inline
import matplotlib.pyplot as plt
_ = plt.hist(train_set['text_len'], bins=200)
plt.xlabel('Text char count')
plt.title("Histogram of char count")
- 类别统计
1
2
3train_set['label'].value_counts().plot(kind='bar')
plt.title('News class count')
plt.xlabel("category")
- 字符统计
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15from collections import Counter
all_lines = ' '.join(list(train_set['text']))
word_count = Counter(all_lines.split(" "))
word_count = sorted(word_count.items(), key=lambda d:d[1], reverse = True)
print(len(word_count))
print(word_count[0])
print(word_count[-1])
# 输出结果
2405
('3750', 3702)
('5034', 1)
1 | from collections import Counter |
数据分析的结论
通过上述分析我们可以得出以下结论:
- 赛题中每个新闻包含的字符个数平均为1000个,还有一些新闻字符较长;
- 赛题中新闻类别分布不均匀,科技类新闻样本量接近4w,星座类新闻样本量不到1k;
- 赛题总共包括7000-8000个字符;
通过数据分析,我们还可以得出以下结论:
每个新闻平均字符个数较多,可能需要截断;
由于类别不均衡,会严重影响模型的精度;