利用线性回归分析波士顿房价

一、仅考虑房屋面积(RM)对房价的影响,RM:每栋住宅的房间数

二、考虑房屋面积和犯罪率因素时的房价。CRIM:城镇人均犯罪率

提示,载入波士顿房价数据集的方法如下:

from sklearn.datasets import load_boston

boston = load_boston()

# X为输入,y为输出

X = boston.data

y = boston.target

第一题代码

# import pandas as pd   #本次代码未使用此函数
import statsmodels.api as sm
import matplotlib.pyplot as plt
from sklearn.datasets import load_boston    # 导入波士顿数据

boston = load_boston()
# 定义波士顿数据

y = boston.target
# y为波士顿数据的target项,即价格
x = boston.data[:,5]
# x为波士顿数据的第5列,即房屋面积参数
x = sm.add_constant(x)
# 为模型增加常数项,即回归线在y轴上面的截距
model = sm.OLS(y,x).fit()
# 构建普通最小二乘(ordinary least squares)模型并拟合

print(model.summary())
# 将回归拟合摘要、回归结果输出

# 下面两行代码表示在画图时添加中文
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

predicts = model.predict()
# 模型的预测值
x = boston.data[:,5]

plt.scatter(x,y,label = '实际值')
# 散点图
plt.plot(x,predicts,color = 'red',linewidth = 2.0,label = '预测值')

plt.legend()
# 显示图形,即每条线上对应的label中的内容
plt.show()
# 显示图形

第二题代码

# import pandas as pd
# import matplotlib.pyplot as plt   ##未使用本次代码
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.datasets import load_boston    # 导入波士顿数据

boston = load_boston()
# 定义波士顿数据

y = boston.target
# y为波士顿数据的target项,即价格
x = boston.data[:,0:6:5]
# x为波士顿的0列5列所有行,0:6:5的意思为0~6的行列区相间隔为5的数据
# 由于第一项为0列,则第二项为5列,第三项超出0~6列的区间不计
y = y[:np.newaxis]
# np.newaxis的功能是插入新的维度
model = LinearRegression()
# 构建线性模型
model.fit(x,y)
# 自变量x,因变量y
predicts = model.predict(x)
# 预测值
R2 = model.score(x,y)
# 拟合程度R2
print('R2 = %.3f' % R2)
coef = model.coef_
# 斜率
intercept = model.intercept_
# 截距
print(model.coef_,model.intercept_)
# 输出W和截距

你可能感兴趣的:(Python,人工智能)