第十二次作业——基于波士顿数据集的回归模型与房价预测0.0 - 16信管黄梓航

时间:2024-02-20 08:47:59

第十二次作业——基于波士顿数据集的回归模型与房价预测0.0

任务:

  1. 导入boston房价数据集
  1. 一元线性回归模型,建立一个变量与房价之间的预测模型,并图形化显示。
  1. 多元线性回归模型,建立13个变量与房价之间的预测模型,并检测模型好坏,并图形化显示检查结果。
  1. 一元多项式回归模型,建立一个变量与房价之间的预测模型,并图形化显示。

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()