NLP以赛代练 Task 2:数据读取与分析
数据读取与分析
- 数据读取
- 数据分析
- 句子长度分析
- 类别分布
- 字符分布统计
- 数据分析的结论
数据读取
import pandas as pdtrain_df = pd.read_csv('/Users/debroon/Desktop/train_set.csv', sep='\t', nrows=100)
train_df.head()
# 查看 top5 的数据
不算前面的行号,第一列为新闻的类别,第二列为新闻的字符。
数据分析
一切技术的出现都是为了解决现实问题,而现实问题分为简单问题和复杂问题。
- 简单问题,需要简单分析,我们使用「数据分析」。比如最近的阅读量怎么减少了。
- 复杂问题,需要复杂分析,我们使用「机器学习」。比如根据阅读历史推送新书。
数据分析,核心是分析思维。
分析思维不是要证明你智商很高,而是考察你面对问题展开的分析能力和分析思维。
书上的 5 w 2 h 5w2h 5w2h 这样的常用分析方法,其实根本用不在数据分析工作里。最常用的分析方法其实是:
- 多维度拆解分析方法;
- 对比分析方法;
- 假设检验分析方法;
- 相关分析方法;
- 群组分析方法;
- AARRR漏斗模型分析方法;
- RFM模型分析方法;
- … …
握常用的业务数据指标,你才可以灵活应对面试中提出的业务问题。我整理了下面常用的业务指标,准备好这些内容,就可以应对 90 90 90 %的面试了。
- 反映用户数据的指标:日新增用户、活跃率、留存率;
- 反映行为数据的指标: P V PV PV(访问次数)、 U V UV UV(访问人数)、转发率、转化率、 K K K因子;
- 反映总量的指标: 成交总额、成交数量、访问时长;
- 反映人均的指标:人均付费( A R P U ARPU ARPU/客单价)、付费用户人均付费( A R P P U ARPPU ARPPU)、人均访问时长;
- 反映付费的指标:付费率、复购率、回购率。
在读取完成数据集后,我们还可以对数据集进行数据分析的操作。
虽然对于非结构数据并不需要做很多的数据分析,但通过数据分析还是可以找出一些规律的。
读取了所有的训练集数据,在此我们通过数据分析希望得出以下结论:
- 句子长度情况?
- 哪些类别比较多?
- 字符分布是怎么样的?
句子长度分析
在赛题数据中每行句子的字符使用空格进行隔开,所以可以直接统计单词的个数来得到每个句子的长度。统计并如下:
train_df['text_len'] = train_df['text'].apply(lambda x: len(x.split(' ')))
print(train_df['text_len'].describe())
运行值:
Populating the interactive namespace from numpy and matplotlib
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
每个句子平均由907个字符构成,最短的句子长度为2,最长的句子长度为57921,所以说,给定的文本/句子比较长。
可视化,将句子长度绘制了直方图:
import matplotlib.pyplot as plt
_ = plt.hist(train_df['text_len'], bins=200)
plt.xlabel('Text char count')
plt.title("Histogram of char count")
直方图,大部分句子的长度都几种在2000以内:
类别分布
接着,对数据集的类别进行分布统计,具体统计每类新闻的样本个数。
train_df['label'].value_counts().plot(kind='bar')
plt.title('News class count')
plt.xlabel("category")
在数据集中标签的对应的关系如下:
- ‘科技’: 0
- ‘股票’: 1
- ‘体育’: 2
- ‘娱乐’: 3
- ‘时政’: 4
- ‘社会’: 5
- ‘教育’: 6
- ‘财经’: 7
- ‘家居’: 8
- ‘游戏’: 9
- ‘房产’: 10
- ‘时尚’: 11
- ‘彩票’: 12
- ‘星座’: 13
从统计结果可以看出,赛题的数据集类别分布存在较为不均匀的情况。在训练集中科技类新闻最多,其次是股票类新闻,最少的新闻是星座新闻。
字符分布统计
接下来,统计每个字符出现的次数,首先可以将训练集中所有的句子进行拼接进而划分为字符,并统计每个字符的个数。
from collections import Counter
all_lines = ' '.join(list(train_df['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)
从统计结果中可以看出,在训练集中总共包括 2405 2405 2405 个字,其中编号 3750 3750 3750 的字出现的次数最多,编号 5034 5034 5034 的字出现的次数最少。
这里还可以根据字在每个句子的出现情况,反推出标点符号。
下面代码统计了不同字符在句子中出现的次数,其中字符 3750 3750 3750,字符 900 900 900 和字符 648 648 648 在 20 w 20w 20w 新闻的覆盖率接近 99 99 99%,很有可能是标点符号。
train_df['text_unique'] = train_df['text'].apply(lambda x: ' '.join(list(set(x.split(' ')))))
all_lines = ' '.join(list(train_df['text_unique']))
word_count = Counter(all_lines.split(" "))
word_count = sorted(word_count.items(), key=lambda d:int(d[1]), reverse = True)print(word_count[0])
print(word_count[1])
print(word_count[2])
运行值:
('3750', 99)
('900', 99)
('648', 96)
数据分析的结论
通过上述分析我们可以得出以下结论:
- 每条新闻包含的字符个数平均为 1000 1000 1000 个,还有一些新闻字符较长;
- 新闻类别分布不均匀,科技类新闻样本量接近 4 w 4w 4w,星座类新闻样本量不到 1 k 1k 1k;
- 总共包括 3000 3000 3000 个字符;
通过数据分析,我们还可以得出以下结论:
- 每个新闻平均字符个数较多,可能需要截断;
- 由于类别不均衡,会严重影响模型的精度。
NLP以赛代练 Task 2:数据读取与分析相关推荐
- NLP以赛代练 Task 1:赛题理解
NLP以赛代练 Task 1 题目 题目求解的是什么 已知什么 要满足哪些条件 解题思路 T F − I D F TF-IDF TF−IDF + 余弦相似度来进行分类 题目 比赛网址:https:// ...
- Task02——零基础入门NLP - 新闻文本分类之数据读取与分析
本期目标 学习使用Pandas读取赛题数据 分析赛题数据的分布规律 数据读取 import pandas as pd train_df=pd.read_csv('./train_set.csv/tra ...
- 实战:战狼2票房数据分析——(3)数据读取及分析
前言 前面我们已经成功的把数据从网站上抓取下来并存入了csv文件当中,那么本章就演练将数据从csv中读取出来,并作相应的分析 数据读取 可以使用pandas的函数read_csv来读取数据,默认情况下 ...
- SICK LMS 111激光雷达数据读取与分析
SICK LMS111激光雷达的使用https://blog.csdn.net/weixin_34146805/article/details/86126953https://blog.csdn.ne ...
- 电影数据读取、分析与展示(Python+Scrapy)
目 录 摘 要 I Abstract II 第1章 绪论 1 1.1 选题背景及意义 1 1.2 国内外研究现状 1 1.2.1 爬虫技术概述 1 1.2.2 爬虫设计者面临的问题与反爬虫技术现状 3 ...
- NLP以赛代练 Task5:基于深度学习的文本分类 2
基于深度学习的文本分类 2 学习目标 文本表示方法 Part3 词向量 1. Skip-grams原理和网络结构 2. Skip-grams训练 2.1 Word pairs and "ph ...
- python pdf解析毕业论文_电影数据读取、分析与展示毕业论文+任务书+Python项目源码...
摘 要 Python为网页数据爬取和数据分析提供了很多工具包.基于Python的BeautifulSoup可以快速高效地爬取网站数据,Pandas工具能方便灵活地清洗分析数据,调用Python的Ma ...
- Matlab使用键值数据读取和分析 MAT 文件
为 MAT 文件中的键值对数据创建数据存储,该文件是mapreduce. 然后,该示例展示了如何读取数据存储中的所有数据并对其进行排序.此示例假定 MAT 文件中的数据适合内存. mapredout. ...
- TensorFlow——二进制数据读取
一.CIFAR10二进制数据集介绍 https://www.cs.toronto.edu/~kriz/cifar.html 二进制版本数据文件 二进制版本包含文件data_batch_1.bin,da ...
最新文章
- 创建mysql数据库,在新数据库中创建表,再尝试删除表
- 《Spark大数据分析:核心概念、技术及实践》一3.6 惰性操作
- 动态数组 allocator
- 芯片里的CPU、GPU、NPU是什么,它们是如何工作的
- 【自定义控件】自定义属性
- Windows 文件含义大全
- 上位机获取单片机发来的数据并进行检验
- Window 平台下添加 tree 命令
- win10访问不了win7文件服务器,win10和win7共享文件教程 win10和win7共享文件无法访问...
- leetcode 咒语和药水的成功对数
- php遇到Allowed memory size of 134217728 bytes exhausted错误解决方法
- python 步数_用python如何修改微信和支付宝每天走路的步数
- 微信小程序云开发使用mysql数据库
- WPF textbox禁用输入法
- 【常用数据结构——并查集(又在乱牵线了)】
- SpringMVC创建Maven工程
- 《Android Studio开发实战 从零基础到App上线》第一版的资源下载和内容勘误
- r语言中popsd和sd的区别_R语言中回归和分类模型选择的性能指标
- 打包代码时候,ts打包错误
- C语言用字符串sex储存,《C语言》上机实验题及参考答案2
热门文章
- python+java+nodejs+vue的校友会社交系统
- 青岛,一座来了就想“哈”啤酒的城市
- 怎么把旧iphone上的交通银行卡转移到新iphone
- 家纺大数据理性应用与品牌情怀
- 计算机显卡可分为哪几类,小白入门必看:笔记本电脑分为哪几类?
- redis 集群模式原理
- python 遍历列表提取下标和值
- presto hive like用法总结,使用| 和 or like多个怎么写
- 2023年全国职业院校技能大赛-应用软件系统开发赛项(高职组)赛题第9套
- or导致索引失效的解决方法_索引失效原因总结