任务:
- 导入boston房价数据集
- 一元线性回归模型,建立一个变量与房价之间的预测模型,并图形化显示。
- 多元线性回归模型,建立13个变量与房价之间的预测模型,并检测模型好坏,并图形化显示检查结果。
- 一元多项式回归模型,建立一个变量与房价之间的预测模型,并图形化显示。
1、导入Boston数据集
#!/usr/bin/python
# -*- coding:utf-8 -*-
# -*- author:DavidHuang -*-
from sklearn.linear_model import LinearRegression
from sklearn.datasets import load_boston
from sklearn.cross_validation import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVR
from sklearn.metrics import r2_score,mean_squared_error,mean_absolute_error
import numpy as np
import pandas as pd
boston = load_boston()
#
# print(boston.DESCR) # 共506条波士顿地区房价信息,每条13项数值特征描述和目标房价
# print("最大房价:",np.max(boston.target))
# print("最小房价:",np.min(boston.target))
# print("平均房价:",np.mean(boston.target))
#
print("开始进行预测和分析!\n========================")
print(bos.keys())==")
bos = load_boston()
bos.keys()
数据集大小
print("数据集大小\n",boston.data.shape)
数据集特征
print("数据集特征\n",boston.feature_names)
数据集预测
print("数据集预测\n",boston.target)
bd = pd.DataFrame(bos.data)
print(bd)
print("开始进行一元线性回归!准备好了吗!")
import matplotlib.pyplot as plt
data = bos.data
x = bos.data[:,5]
y = bos.target
plt.scatter(x,y)
plt.plot(x,8*x-25)# 这里定义一条直线 y = w*x+b,其中w是斜率,b是与y轴的截距
plt.show()
多元线性回归
print("一元回归结束!开始进行多元线性回归!准备好了吗!")
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
boston = load_boston()
lineR = LinearRegression()
# w = lineR.coef_
# b = lineR.intercept_
x = boston.data[:,12].reshape(-1,1)
y = boston.target
lineR.fit(boston.data,y)
plt.figure(figsize=(10,6))
plt.scatter(x,y)
plt.plot(x,-0.8*x+30,'r')#回归线
plt.show()
# 将一元转多元
lineR = LinearRegression()
lineR.fit(x,y)
y_pred = lineR.predict(x)
plt.plot(x,y_pred)
print(lineR.coef_,lineR.intercept_)
plt.show()
# 一元转多项
from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(degree=2)
x_poly = poly.fit_transform(x)
lrp = LinearRegression()
lrp.fit(x_poly,y)
y_poly_pred = lrp.predict(x_poly)
plt.scatter(x,y)
plt.scatter(x,y_pred)
plt.scatter(x,y_poly_pred)
plt.show()