2 Star 3 Fork 1

maple / 100-Days-Of-ML-Code

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

100-Days-Of-ML-Code

原文:Avik-Jain:100-Days-Of-ML-Code

介绍

机器学习100天

第一天 | 数据处理

1、导入需要的库 numpy 和 pandas numpy-包含数学计算函数 pandas-用于导入和管理数据集

2、导入数据集 数据集采用.csv格式。csv以文本形式保存表格数据,即文件每一行是一条数据记录。可以采用pandas的read_csv读取本地的csv为一个数据帧,通过数据帧制作自变量和因变量的矩阵和向量。

3、处理丢失数据 我们得到的数据很少是完整的,可能由于某种原因造成丢失,为了不降低机器学习性能,需要处理数据。采用sklearn.preprocesing库导入Imputer类

4、解析分类数据 分类数据指含有标签值得变量,取值范围一般是固定的,例如“yes”和“no”不能作为模型的数学计算,需要解析成数字。为了实现这一功能可以从sklearn.perprocesing库导入LabelEncoder类

5、拆分数据集为测试数据集合和训练集合 把数据集处理拆分成两个:一个是用于训练模型的训练集合,一个是用于验证模型的测试集合,两者比例一般为80:20。采用sklearn.crossvalidation库中的train_test_split()方法

6、特征缩放 大部分模型算法使用两点间的欧式距离表示,但此特征在幅度、单位和范围姿态等问题上变化很大。在距离计算中,高幅度的特征比低幅度的特征权重更大,可使用特征标准化或者Z值归一化解决。导入sklearn.preprocrssing库的dardScalar类

第二天 | 简单线性规划

使用单一特征来预测因变量

这是一种基于自变量(x)来预测因变量(y)的方法。假设这两个变量是线性相关的,我们尝试寻找一种根据特征或者自变量(x)的线性关系来精确预测因变量(y)。

找到最佳的拟合线

在回归任务中,我们将通过“最佳拟合线”来最小化预测的误差,即回归线的误差是最小的,尽量最小化实际值(Yi)和模型预测值(Yp)之间的长度。

y位因变量,x1为自变量,在这回归任务中,我们将预测一个学生根据所学习小时数来计算分数的百分比。

b0为y的截距,b1为斜率

1、数据预处理

按照之前的数据预处理信息表那样执行相同的步骤

  • 导入相关库
  • 导入数据集
  • 检查缺失数据
  • 划分数据集
  • 特征缩放(使用线性模型的相关库)
2、训练简单线性回归模型

为了使用数据集训练模型,我们使用sklearn.liner_model库的LinearRegression类,创建一个LinearRegression类的regressor对象,使用LinearRegression类的fit()方法对数据集进行训练

3、预测结果

预测测试集的结果,将输出保存在向量Y_pred中,使用前一步训练的回归模型,采用LinearRegression类预测方法对结果进行预测

4、可视化

采用matplotlib.pyplot库对训练结果和预测结果做散点图,查看模型效果

第三天 | 多元线性回归

多元线性回归尝试通过一种线性方程适配观测数据,这个方程是由两个或者两个以上特征与应变量构建的一个关系。多元线性回归和简单线性回归实现步骤很相似,在评价部分有所不同。你可以用它来找出在预测结果上那个因素影响力最大,以及不同变量是如何互相关联的。 y是因变量,x0,x1...xn是多元自变量

前提

想要有一个成功的回归分析,确认这些假设很重要

  1. 线性:自变量和因变量的关系应该是线性的(即,特征值和预测值是线性相关的)
  2. 方差齐性(常数方差):误差项的分散(即方差)必须等同
  3. 多元正态分布:多元回归假定残差符合正态分布
  4. 缺少多重共线性:假设数据有极少甚至没有多重共线性,当特征(或自变量)不是相互独立时,会引发多重共线性
注意

过多的变量可能会降低模型的精准度,尤其是如果存在一些对结果无关的变量,或者存在对其他变量造成很大影响的变量。

这里介绍一些选择合适变量的方法

  1. 向前选择法
  2. 向后选择法(向后剔除法/向后消元法)
  3. 向前向后法:结合了上述说的向前法和向后法,先用向前发筛选一遍,再用向后法筛选一遍,直到最后无论怎么筛选模型变量都不再发生变化,就算结束了
虚(拟)变量

在多元回归模型中,当遇到数据集是非数值数据类型时,使用分类数据是一个非常有效的方法。分类数据,是指反映(事物)类别的数据,是离散数据,其数据个数(分类属性)有限(但可能很多)且值之间无序。比如,按性别分为男女两类。在一个回归模型中,这些分类值可以用虚拟变量来表示,变量通常取1或者0这样的值,来表示肯定或者否定类型。

虚拟变量圈套

虚拟变量圈套是指两个以上(包括两个)变量之间的高度相关的情形。简而言之,就是存在一个能够被其他变量预测的变量,我们举一个存在重复类别(变量)的直观例子:假设我们舍弃男性类别,那么该类别也可以通过女性类别来定义(女性值为0,表示男性,为1,表示女性),反之亦然。
解决虚拟变量圈套的方法是类别变量减去一:假如有m个类别,那么在模型构建时取m-1个虚拟变量,减去的那个变量可以看做是参照值。

D1、D2虚拟变量

1、数据预处理
  1. 导入相关库
  2. 导入数据集
  3. 检查缺失数据
  4. 数据分类
  5. 编辑虚拟变量并注意避免虚拟变量圈套
  6. 特征缩放我们将用简单线性回归模型的相关库来做
2、训练模型

这一步和简单线性回归模型处理相同,用sklearn.liner_model库的LinearRegression类,创建一个LinearRegression类的regressor对象,使用LinearRegression类的fit()方法对数据集进行训练

3、预测结果

在测试集上进行预测,将出输出结果保存在向量Y_pred中,使用上一步训练用到的LinearRegression类的regressor对象,训练完之后用其predict方法预测结果。 参考:Avik-Jain:100-Days-Of-ML-Code

空文件

简介

机器学习100天 展开 收起
Python
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Python
1
https://gitee.com/yangmiao123/100-Days-Of-ML-Code.git
git@gitee.com:yangmiao123/100-Days-Of-ML-Code.git
yangmiao123
100-Days-Of-ML-Code
100-Days-Of-ML-Code
master

搜索帮助