嘿!我是目录
一、多元线性回归
1. 定义
在回归分析中,如果有两个或两个以上的自变量,就称为多元回归。事实上,一种现象常常是与多个因素相联系的,由多个自变量的最优组合共同来预测或估计因变量,比只用一个自变量进行预测或估计更有效,更符合实际。因此多元线性回归比一元线性回归的实用意义更大。
2. 数据清洗
多元线性回归属于监督机器学习算法,通过已知数据训练得到模型或决策函数。应用此算法时,不能盲目地套用算法,必须对数据的有效性、正确性、假设合理性进行验证,如果发现数据本身不正确,就需要纠正。
数据清洗
- 缺失值处理
异常值处理
2.1 缺失值处理
删除法
删除观测样本
删除变量
使用完整原始数据进行分析
改变权重
插补法
抽样填补
均值差补
回归模型
热平台差补
冷平台差补
拉格朗日插值法
随机森林插值
替换法
缺失值所在变量为数值型:用该变量在其他所有对象的取值的均值/特定值来替换变量的缺失值
缺失值所在变量为非数值型:用该变量其他全部有效观测值的中位数或众数进行替换
参考: http://blog.csdn.net/qq_31584157/article/details/52562830
2.2 异常值(离群点)处理
异常值定义:测定值中与平均值的偏差超过三倍标准差的值
异常值大概包括离群值、重复值、数据不一致。
1.判断异常值方法汇总
简单统计量分析:描述性统计,判断变量的取值是否超出合理的范围
3O原则:正态分布假设下,P(|x-u|>3o)<=0.003,属于极个别的小概率事件
箱型图分析:1.5倍四分位间距的值
图像法汇总:绘制直方图、绘制点图、绘制箱形图、绘制qq图、绘制单变量散点图
局部异常因子检测:基于密度识别异常值的算法,只对数值型数据有效
通过聚类检测异常值
2.异常值处理方法(数据光滑)
分析异常值出现的原因,再判断是否取舍,如果数据正确,可直接在数据上进行挖掘建模
删除法:直接把相应的记录删除
把异常值视为缺失值:利用缺失值处理的方法进行处理
平均值修正:可用前后两个观测值的平均值修正该异常值
不处理:直接在具有异常值的数据集上进行挖掘建模
3. 特征共线性问题
- 定义
多重共线性(Multicollinearity)是指线性回归模型中的自变量之间由于存在高度相关关系而使模型的权重参数估计失真或难以估计准确的一种特性,多重是指一个自变量可能与多个其他自变量之间存在相关关系。
多重共线性是使用线性回归算法时经常要面对的一个问题。在其他算法中,例如决策树或者朴素贝叶斯,前者的建模过程时逐渐递进,每次都只有一个变量参与,这种机制含有抗多重共线性干扰的功能;后者假设变量之间是相互独立的。但对于回归算法来说,都要同时考虑多个预测因子,因此多重共线性通常不可避免。
- 检测方法
- 经验式的诊断方法
- 统计检验方法
详细可见:多重共线性(统计累赘)的概念、特征及其测量方式和处理方式
二、用Excel做房价预测线性回归
1. 配置Excel
用Excel做线性回归前的具体配置准备步骤,请参照上次博客《用Excel+Anoconda-jupyter做线性回归》中的1.1。
2. 完善数据集
2.1 剔除错误数据
数据集中部分数据存在错误,在对数据进行分析之前,需要剔除错误数据。
此处剔除卧室数和洗浴间数都为0的数据。
选中一组bedroom
和bathroom
都为0的数据:
筛选不正常数据:
选中序号为蓝色及前面一组序号为黑色的所有行,删除:
此时是不是看不到其他正常数据了?这时候我们点一下上面的筛选,就能显示删除不正常的数据后的全部的数据了。
当做其他线性回归时,或者其他需要筛选步骤的,都可用此方法查找数据。
2.2 处理非数据数值
线性回归中经常会遇到非数值型数据,即分类型数据,比如性别、所属省份、专业类型等等
分类型数据无法量化,一般会采用哑数据进行处理
如某个数据分为A、B、C三类,即可采用两个哑数据a,b
类型为A时,a=1,b=0
类型为B时,a=0,b=1
类型为C时,a=0,b=0
不使用a,b,c三个哑数据,是因为如果哑数据个数与分类数相同时,恒有a+b+c=1,会存在多重共线性问题
所以在N分类时,一般使用N-1个哑数据
- 在我们的数据集中neighborhood和style栏是非数值数据,在neighborhood一栏中将A,B,C以二进制编码表示为10,01,00,也就是十进制的2,1,0。
- 在style一栏中同理可得ranch,victorian,lodge为2,1,0。
方法:
点击菜单栏的开始,找到查找和选择,点击选择替换,根据上述替换数据。
在替换的时候一定要勾选区分大小写:
3. Excel做线性回归
- 数据选择:
①Excel中——数据——数据分析
② 选择回归
③
- 得到结果:
通过P-value一栏可以得到房屋面积和价格的相关性最强。
根据表中数据得到回归方程:
y= -0.45723 x1 -28426 x2 +345.9623 x3 +4509.576 x4 -2915.15 x5 +2128.176 x6
r²=0.723794
三、用jupyter+sklearn做线性回归练习
1. 打开jupyter步骤
点开Windows
2.写入代码
2.1 不做数据处理
①代码(以下代码可分步进行):
#引入包
import pandas as pd
import numpy as np
import seaborn as sns
from sklearn import datasets
from sklearn.linear_model import LinearRegression
df = pd.read_csv('D:\\**\\house_prices.csv')