一、数据清洗
1、数据数值处理
(1)数据集主要问题
1.数据缺失
2.数据不一致
3.存在“脏”数据
4.数据不规范
数据整体较为规整,但仍存在以下问题:数据缺失,存在某些数据等于0
(2)删除重复数据
(a)新建一个工作表house_prices_new.csv执行数据清洗,方便和原始数据区分开来,选中需要处理的数据。
(b)选择数据——重复项——删除重复项
(c)利用唯一标识house_id,删除重复值
未发现重复项
(3)升序排列
选择排序——升序
(4)缺失值处理
通过人工手动补全,适合与缺失值比较少
删除缺失数据
用列表平均值代替缺失值
用统计模型计算出来的值代替缺失值
本题删除所有值为0的,缺失值所在行
(a)选中地址列的数据区域即bedrooms所在的列
(b)采用选择菜单:点击数据——自动筛选——图中下拉三角形
(c)筛选值为0
(d)选中删除bedrooms值为0的所有行
(e)以同样的方法删除bathrooms值为0的行
结果如下
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,会存在多重共线性问题
在数据中neighborhood和style栏是非数值数据,在neighborhood一栏中将A,B,C以二进制编码表示为10,01,00,也就是十进制的2,1,0。
在style一栏中同理可得ranch,victorian,lodge为2,1,0。
3.使用Excel实现回归
根据表中数据得到回归方程
y=-9109.9x1+345.41x2-1645.87x3+7907.17x4+4524.79x5
r²=0.622195
通过P-value一栏可以得到房屋面积和价格的相关性最强。
三.用Sklearn库做房价预测线性回归
代码
#导入相关库
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split #这里是引用了交叉验证
from sklearn.linear_model import LinearRegression #线性回归
from sklearn.linear_model import Lasso, Ridge, LinearRegression as LR
from sklearn.metrics import r2_score, explained_variance_score as EVS, mean_squared_error as MSE
from sklearn.