开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第5天
一、本篇笔记重点内容:
- 数据可视化
- 数据整合
- 数据分组
- 数据不均衡
二、详细知识点介绍
数据可视化
-
数据可视化借助图形,图标等手段,从数据集中抽取有效信息,并对其进行展现
-
从视觉上快速感知、了解数据集
-
多维度观察“平面”数据
Matplotlib
- 采集数据
- 数据可视化了解数据统计特征
- 可绘制散点图,折线图,分布图,盒图(箱线图)等
- 充分了解数据,再进行数据分析
设置折线图的颜色、线型、标签、显示图例
ax1.plot(iris['sepal_length'], 'k--', label='sepal_length')
ax1.legend(loc='best')
设置散点图的颜色和线型
ax3.scatter(range(len(iris['petal_width'])),iris['petal_width'] , label= 'petal_width')
ax3.legend(loc='best')
绘制直方图并设置条形bin的个数
a = ax2.hist(iris['sepal_width'],bins =10, label='sepal_width')
ax2.legend(loc='best’)
箱线图
whis指定离群点分割线
ax.boxplot(iris['sepal_length'], whis=2)
plt.title()设置标题
plt.title('box plot’)
plt.ylable()设置坐标轴名称
plt.ylabel('data content')
画图工具 Seaborn
- Seaborn是基于Matplotlib的一个Python作图模块
- 配色更加好看,种类更多,但函数和操作比较简单
- Seaborn有自带的数据集可供练习
数据整合
- 使用Pandas库中的merge()函数合并数据集
- 建立两个数据集df1和df2
df1=DataFrame({'lkey':['b','b','a','c'], 'data1':range(4)})
df2=DataFrame({'rkey':['a','b','b','d'], 'data2':range(4)})
- 默认情况下merge()会根据重叠列的列名进行合并
- merge()从左至右进行合并,用left_on和right_on指定
- 从df1开始,找Ikey与rkey相同的值,进行合并
数据分组
数据分组是数据分析过程中的一个重要环节 例如
- 对大学生成绩数据求平均,查看大学生的平均水平
- 对不同专业的学生进行分组,分别计算不同专业学生成绩的平均值
- 使用Pandas库中groupby()函数,对数据进行分组
数据不均衡
考虑数据集不均衡,关注数据集的类别所属问题
对于分类问题,在本身观测记录X的基础上,数据集还会添加一列字段数据y,表 示观测记录的类别, 那么该标注数据集表示为(X, y)
非标注数据集适用于聚类问题,通过学习算法,来获取事先未知的类别信息
解决数据不均衡-欠采样
- 从多数的负类样本中,随机选择与正类样本数量相当的数据样本,组成新的数据集,这种方法称为欠采样
- 正类样本数量过少,欠采样会直接导致样本容量大幅度减少,损失过多的有效信息
解决数据不均衡-过采样
- 与欠采样不同,过采样随机从少量的正类样本中重采样,来扩充样本正类的数量,和负类样本的数量相当
- 过采样可以让样本数量增加,消除不均衡,但会导致严重的过度拟合
解决数据不均衡-阈值移动
在Logistic回归分类问题中,针对每一个要分类的数据记录,使用Simgod函数作为激励函数,输出一个对应的数值y,作为判定类别的概率
在阈值移动方法中,预先设置阈值a 如果y > a,数据归属类A 反之,数据归属类B
为解决数据不均衡,可以改变阈值来调节数据集中类别的比例,适当增加少数类样本的数量