原文: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为斜率
按照之前的数据预处理信息表那样执行相同的步骤
为了使用数据集训练模型,我们使用sklearn.liner_model库的LinearRegression类,创建一个LinearRegression类的regressor对象,使用LinearRegression类的fit()方法对数据集进行训练
预测测试集的结果,将输出保存在向量Y_pred中,使用前一步训练的回归模型,采用LinearRegression类预测方法对结果进行预测
采用matplotlib.pyplot库对训练结果和预测结果做散点图,查看模型效果
多元线性回归尝试通过一种线性方程适配观测数据,这个方程是由两个或者两个以上特征与应变量构建的一个关系。多元线性回归和简单线性回归实现步骤很相似,在评价部分有所不同。你可以用它来找出在预测结果上那个因素影响力最大,以及不同变量是如何互相关联的。 y是因变量,x0,x1...xn是多元自变量
想要有一个成功的回归分析,确认这些假设很重要
过多的变量可能会降低模型的精准度,尤其是如果存在一些对结果无关的变量,或者存在对其他变量造成很大影响的变量。
这里介绍一些选择合适变量的方法
在多元回归模型中,当遇到数据集是非数值数据类型时,使用分类数据是一个非常有效的方法。分类数据,是指反映(事物)类别的数据,是离散数据,其数据个数(分类属性)有限(但可能很多)且值之间无序。比如,按性别分为男女两类。在一个回归模型中,这些分类值可以用虚拟变量来表示,变量通常取1或者0这样的值,来表示肯定或者否定类型。
虚拟变量圈套是指两个以上(包括两个)变量之间的高度相关的情形。简而言之,就是存在一个能够被其他变量预测的变量,我们举一个存在重复类别(变量)的直观例子:假设我们舍弃男性类别,那么该类别也可以通过女性类别来定义(女性值为0,表示男性,为1,表示女性),反之亦然。
解决虚拟变量圈套的方法是类别变量减去一:假如有m个类别,那么在模型构建时取m-1个虚拟变量,减去的那个变量可以看做是参照值。
D1、D2虚拟变量
这一步和简单线性回归模型处理相同,用sklearn.liner_model库的LinearRegression类,创建一个LinearRegression类的regressor对象,使用LinearRegression类的fit()方法对数据集进行训练
在测试集上进行预测,将出输出结果保存在向量Y_pred中,使用上一步训练用到的LinearRegression类的regressor对象,训练完之后用其predict方法预测结果。 参考:Avik-Jain:100-Days-Of-ML-Code
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型