Python机器学习▶线性回归——基于sklearn建立房价预测模型!

 

1. 数据理解

此次建模预测的数据集来源于Data Castle上的“美国King County房价预测训练赛”,链接如下:

数据特征描述如下:

Python机器学习▶线性回归——基于sklearn建立房价预测模型!

测试集主要包括3000条记录,13个字段,跟训练集的不同是测试集并不包括房屋销售价格,通过由训练集所建立的模型以及所给的测试集,得出测试集相应的房屋销售价格预测值。

 

2.数据准备

环境:win7+Anaconda+Jupyter notebook

  • 导入数据
import pandas as pd
import numpy as np

#导入训练集
train=pd.read_csv(r"F:\Sets\KingCounty\train.csv")
train.head()

Python机器学习▶线性回归——基于sklearn建立房价预测模型!

发现第一条记录变成了列名,下面进行调整:

#给训练集的列进行赋名
trainNames = ["salesTime","salePrice","bedroomsNum","bathroomNum","housingArea",
              "parkingArea","floorsNum","housingScore","coveredArea",
              "basementArea","buildingTime","repairYear","latitude","longitude"]
train=pd.read_csv(r"F:\Sets\KingCounty\train.csv",names=trainNames)
train.head()

Python机器学习▶线性回归——基于sklearn建立房价预测模型!

  • 查看训练集的形状

Python机器学习▶线性回归——基于sklearn建立房价预测模型!

训练集中共10000条记录、14条字段

  • 查看训练集的数据类型

Python机器学习▶线性回归——基于sklearn建立房价预测模型!

 

3.数据清洗

Python机器学习▶线性回归——基于sklearn建立房价预测模型!

数据清洗的目的

数据清洗主要包括缺失值检查、重复值检查、数据类型转换、剔除异常值。

  • 缺失值检查

Python机器学习▶线性回归——基于sklearn建立房价预测模型!

训练集不存在缺失值

  • 重复值检查

Python机器学习▶线性回归——基于sklearn建立房价预测模型!

训练集不存在重复值

  • 数据类型转换
#转换数据类型train["salesTime"] =train["salesTime"].astype(str)train["buildingTime"] =train["buildingTime"].astype(str)train["repairYear"] =train["repairYear"].astype(str)train.info()

Python机器学习▶线性回归——基于sklearn建立房价预测模型!

  • 剔除异常值

将13个自变量分别与因变量["salePrice"]建造散点图:

#1.销售日期与销售价格
import matplotlib.pyplot as plt
x1=train["salesTime"]
y0=train["salePrice"]
plt.scatter(x1,y0)
plt.xlabel("salesTime")
plt.ylabel("salePrice")
plt.show()

......

#13.经度与销售价格

其中,房屋面积与销售价格、建筑面积与销售价格有明显的线性趋势,且都有明显的离群值。

Python机器学习▶线性回归——基于sklearn建立房价预测模型!

房屋面积与销售价格

Python机器学习▶线性回归——基于sklearn建立房价预测模型!

建筑面积与销售价格

 #开始剔除异常值

Python机器学习▶线性回归——基于sklearn建立房价预测模型!

# 再次绘图

Python机器学习▶线性回归——基于sklearn建立房价预测模型!

4. 建立模型

  • 查看因变量数据分布

建立线性回归模型,首先需要查看一下因变量["salePrice"]是否服从正态分布:

#检查数据偏斜度print("Skew is:",train["salePrice"].skew())plt.hist(train["salePrice"],color="orange")plt.show()

Python机器学习▶线性回归——基于sklearn建立房价预测模型!

因变量很明显是正偏,需要进行对数处理:

target=np.log(train["salePrice"])
print("Skew is:",target.skew())
plt.hist(target,color="orange")
plt.show()

Python机器学习▶线性回归——基于sklearn建立房价预测模型!

对因变量["salePrice"]进行对数处理后再次建图会发现这次基本符合正态分布,可以进行线性回归建模。

  • 特征工程,筛选变量
#各变量和因变量之间的相关性
corr=train.corr()
print(corr["salePrice"].sort_values(ascending=False))
corr["salePrice"].plot(kind="bar",color="b",alpha=0.6)
plt.ylabel("Relevance")
plt.yticks([0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0])
plt.xticks(rotation=65)
plt.show()

Python机器学习▶线性回归——基于sklearn建立房价预测模型!

Python机器学习▶线性回归——基于sklearn建立房价预测模型!

可发现,经度["longitude"]与销售价格的相关性仅有约0.029,可以剔除。

  • 构建线性回归模型

Python机器学习▶线性回归——基于sklearn建立房价预测模型!

#拆分训练集与验证集
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test = train_test_split(x,y,
                                                 random_state=10,
                                                 test_size=0.2)

Python机器学习▶线性回归——基于sklearn建立房价预测模型!

使用R^2(拟合优度)指标来评估模型的性能,它的取值在0到1之间,较高的R平方值代表着更好的拟合。

Python机器学习▶线性回归——基于sklearn建立房价预测模型!

得到的R^2结果可说明筛选的特征变量能解释目标变量中约74%的差异。一般来说拟合优度在0.7以上,我们就认为模型是可靠的。

至此,预测模型建立完成。

接下来,将测试集数据带入预测模型,生成预测结果。

 

5.数据预测

  • 导入测试集

Python机器学习▶线性回归——基于sklearn建立房价预测模型!

#转换数据类型
test["salesTime"] =test["salesTime"].astype(str)
test["buildingTime"] =test["buildingTime"].astype(str)
test["repairYear"] =test["repairYear"].astype(str)
test.info()

Python机器学习▶线性回归——基于sklearn建立房价预测模型!

  • 生成预测
#测试集特征变量
features2=test[["bedroomsNum","salesTime","bathroomNum",
               "housingArea","parkingArea","floorsNum",
               "housingScore","coveredArea","basementArea",
                "buildingTime","repairYear","latitude"]]
features2.head()

Python机器学习▶线性回归——基于sklearn建立房价预测模型!

Python机器学习▶线性回归——基于sklearn建立房价预测模型!

把预测值转换为正确的形式,反向使用log(),执行exp()。因此,用np.exp()来做预测,因为之前已经取了对数。

#最终预测
final_prediction = np.exp(model.predict(features2))
final_prediction

Python机器学习▶线性回归——基于sklearn建立房价预测模型!

最终预测结果

将预测结果数据写入文件:

Python机器学习▶线性回归——基于sklearn建立房价预测模型!

#将预测结果导出为CSV文件
test.to_csv(r"C:\Users\Administrator\Desktop\price.csv")

 

  • 官网提交结果

仍可通过部分参数的调整改进预测模型,提升预测效果。进入Data Castle页面按照要求格式提交结果。

源码获取私信小编01哦!