机器学习Python实践-阅读笔记Ⅰ

176 阅读5分钟

机器学习Python实践总共有22个章节(Ch1-22)

阅读笔记I:主要介绍的是部分一和二

本书的第一部分 初始——ch3和ch4的总结

Ch3:第一个机器学习项目(经典的鸢尾花数据集)

机器学习项目的所有步骤:

1. 导入数据
2. 概述数据
(1)数据的维度
print('数据维度: 行 %s,列 %s' % dataset.shape)
(2)查看数据自身
# 查看数据的前10行
print(dataset.head(10))
(3)统计描述所有的数据特征
# 统计描述数据信息
print(dataset.describe())
(4)数据分类的分布情况
# 分类分布情况
print(dataset.groupby('class').size())
  • 需要数据的不同classes的数据分布是否平衡(不同类别数量不要差过多即可)。如果数据分布不平衡,可能会影响模型的准确度。

调整数据平衡的方法:

  1. 扩大数据样本:创造一个更大的数据集
  2. 尝试生成人工样本:从少数类的实例中随机抽样特征属性,创造一个更大的数据集
  3. 数据的重新抽样:过抽样(复制少数类样本)& 欠抽样(删除多数类样本)
  • 数据量很大时,可以考虑测试欠抽样;当数据量比较少时,可以考虑过抽样

  1. 异常检测和变化检测:考虑小类作为异常值类
3. 数据可视化
4. 评估算法
  • 分离出评估数据集
  • 采用10折交叉验证来评估算法模型
  • 生成6个不同的模型来预测新数据
  • 选择最优模型
5. 实施预测

本书的第二部分 数据理解——ch6和ch7的总结

Ch6:数据理解

使用的是pandas包导入数据和数据的清洗与处理,对象类型为:DataFrame类型

1. 简单地查看前10行数据

data=data.head(10) #展示前10行数据

2. 数据的维度

  • 太多的行——要花费大量的时间来训练算法得到模型; 太少的数据——对算法的训练不充分,得不到合适的模型

  • 如果数据具有太多的特征,会引起某些算法性能的下降

data.shape  # 通过DataFrame的shape属性看数据由多少行和多少列

3. 数据的类型和属性(一般字符串会被转化为浮点数or整数,便于计算和分类)

data.dtypes  # 通过DataFrame的Type属性来查看每一个字段的数据类型

4. 通过描述性统计分析数据

  • describe() 函数展现8个信息:1. 数据记录数(count) 2.平均值(mean) 3.标准方差(std(即standard))
    4.最小值(min) 5.下四分位数(40%) 6.中位数(50%) 7.上四分位数(75%) 8.最大值(max)
set_option('precision',xxx) #xxx表示几位数,比如2就是小数点后两位
data.describe()  # 通过DataFrame的describe()函数来查看描述性统计内容

5. 数据分类的分布情况(当在分类算法中,需要考虑每个类别中的不同数据分布情况)

data.groupby('xxx').size()  # xxx表示类别,这段代码结果为xxx该查询类别不同类型的数据总大小是多少
e.g.  >>data.groupby('class').size()#class类别只有01两种数据

class
0  500 
1  268
dtype:int64

6. 理解数据属性的相关性(常用的方式是皮尔森系数)

  • 为啥要看数据属性之间的相关性?
  • : 因为如果数据的关联性比较高时,有些算法如:Linear/逻辑回归算法等的性能会降低;而且Linear/LogisticRegression都是线性的,只有数据呈现线性特征的时候才能使用。
set_option('precision',2)
data.corr(method='pearson')#1:变量完全正相关,0:无关,-1:完全负相关

7. 审查数据的分布情况

  • 通过分析数据的高斯分布情况来确认数据的偏离情况。

  • 在高斯分布图中,y轴两点之间的面积是发生的概率。在很多机器学习算法中都会假定数据遵循高斯分布,先计算数据的高斯偏离状况,再根据偏离状况准备数据。

我们可以使用DataFrame的skew()方法来计算所有数据属性的高斯分布偏离情况。

data.skew() #数据接近0,表示数据的偏差非常小;>0,正偏差数值较大,为正偏或右偏;<0,负偏差数值较大,为负偏或左偏

Ch7:数据可视化

一般分成做单一图表or多重图表

  • 单一图表分为:1.直方图 2.密度图 3.箱线图

  • 直方图:看到数据是高斯分布,指数分布 or 偏态分布。 代码为: data.hist() image.png

  • 密度图:即直方图的形式只不过是用曲线来展示

箱型图:又称为箱线图/盒须图/盒式图,目的:显示一组数据分散情况的统计图

image.png

  • 通过上图所示:先画一条中位数线,然后以上下四分位数画一个盒子———>最上/下方各有一条线为边缘线,在边缘线外的点为异常值。

👇下面介绍两种多重图表

  1. 相关矩阵图:用于观察两个不同属性的相互影响的程度
  • 若两个属性是按照相同方向变化,即正向影响;若相反方向变化(一般Pearson系数值为负值),即反向影响。
  1. 散点矩阵图:主要用于比较跨类别的聚合数据/多元线性回归 具体图如何看嘞?——>详情请见(blog.csdn.net/qq_37596349…)