房价预测模型简介
房价预测模型是一种简单的线性模型,属于监督学习的一种,给一些输入参数比如房屋面积、卧室数量等做,然后结合给定的价格标签做预测。
单变量房价预测
import pandas as pd
import seaborn as sns
sns.set(context="notebook", style="whitegrid", palette="dark")
导入做数据分析的pandas库,用seaborn来做可视化。
sns.set是seaborn的一个环境设置方法,具体使用规则可以输入sns.set?
查看(jupyter中)。将上下文环境设置为notebook,白色背景,黑色线。
df0 = pd.read_csv('data0.csv', names=['square', 'price'])
sns.lmplot('square', 'price', df0, height=6, fit_reg=False)
data0.csv文件存放了单变量房价预测所要用的数据,第一列是面积,第二列是价格。用pandas的方式读入数据。
用sns.Implot方法可视化这些数据。设置相关参数如:x轴的名称“square”,y轴的名称“price”,所需数据“df0”,图的大小。fit_reg意思就是是否需要拟合这些散点(fit regression),False和True的结果分别如下
结果如下图所示:
如果要看下前5行的数据,可以用
df0.head(5) # 也可以直接输入df0看全部的数据
还有如果要看具体信息的话可以输入
df0.info()
在这里的输出情况如下
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 47 entries, 0 to 46
Data columns (total 2 columns):
square 47 non-null int64
price 47 non-null int64
dtypes: int64(2)
memory usage: 832.0 bytes
简单了解之后再来看下多变量房价预测
多变量房价预测
import matplotlib.pyplot as plt
from mpl_toolkits import mplot3d
df1 = pd.read_csv('data1.csv', names=['square', 'bedrooms', 'price'])
df1.head()
到如用到的库,这里用pyplot创建图片,用mplot3D绘制3D图。
从data.csv文件中导入数据。输入是房屋的面积和房间卧室数量,输出是房屋价格。
fig = plt.figure() # 创建一个原始图
# 创建一个 3D 对象
ax = plt.axes(projection='3d')
# 设置 3 个坐标轴的名称
ax.set_xlabel('square')
ax.set_ylabel('bedrooms')
ax.set_zlabel('price')
# 绘制 3D 散点图
ax.scatter3D(df1['square'], df1['bedrooms'], df1['price'], c=df1['price'], cmap='Blues')
最后一行代码中的c=df1['price']
表示以价格的变化情况来控制散点颜色深度的变化,颜色设置为蓝色。
为解决数据单位和范围的问题,通常要数据规范化。
def normalize_feature(df):
return df.apply(lambda column: (column - column.mean()) / column.std())
df = normalize_feature(df1)
df.head()
规范化处理后的数据如下
square bedrooms price
0 0.130010 -0.223675 0.475747
1 -0.504190 -0.223675 -0.084074
2 0.502476 -0.223675 0.228626
3 -0.735723 -1.537767 -0.867025
4 1.257476 1.090417 1.595389
处理之后的图像如下
ax = plt.axes(projection='3d')
ax.set_xlabel('square')
ax.set_ylabel('bedrooms')
ax.set_zlabel('price')
ax.scatter3D(df['square'], df['bedrooms'],df['price'],c=df[