波士顿房价预测

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split #分割数据
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
from sklearn.metrics import mean_squared_error
from sklearn.metrics import mean_absolute_error
from sklearn.linear_model import SGDRegressor
from sklearn.neighbors import KNeighborsRegressor
from sklearn.svm import SVR
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import RandomForestRegressor
from sklearn.ensemble import AdaBoostRegressor
from sklearn.ensemble import ExtraTreesRegressor
from sklearn.ensemble import GradientBoostingRegressor

#读取数据存储在变量data,target中
data_url = "http://lib.stat.cmu.edu/datasets/boston"
raw_df = pd.read_csv(data_url, sep="\s+", skiprows=22, header=None)
data = np.hstack([raw_df.values[::2, :], raw_df.values[1::2, :2]])
target = raw_df.values[1::2, 2]
print(data.shape)
print(target.shape)

#数据分割
X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.3)#随机种子30%测试集的数据作为测试集
print(X_train.shape)
print(X_test.shape)
print(y_train.shape)
print(y_test.shape)

#数据标准化
scaler_X = StandardScaler()
scaler_y = StandardScaler()
#分别对训练和测试数据的特征及目标值进行标准化处理
X_train = scaler_X.fit_transform(X_train)
X_test = scaler_X.transform(X_test)
y_train = scaler_y.fit_transform(y_train.reshape(-1,1))#转换为二维数组将目标值转换为二维数组
y_test = scaler_y.transform(y_test.reshape(-1,1))#转换为二维数组转换为二维数组

#使用默认参数值实例化线性回归模型
lr = LinearRegression()
#使用训练数据进行训练
lr.fit(X_train, y_train)#ravel()将一维数组转换为二维数组
#对测试数据进行回归预测
lr_y = lr.predict(X_test)
#计算预测值与真实值之间的差异
print("LinearRegression的R_square值为:", r2_score(y_test, lr_y))#计算预测值与真实值之间的差异R_square值为:0.7777777777777777
print("LinearRegression的MSE(均方误差)值为:", mean_squared_error(scaler_y.inverse_transform(y_test), scaler_y.inverse_transform(lr_y)))#计算预测值与真实值之间的差异MSE(均方误差)值为:0.28125
print("LinearRegression的MAE(平均绝对误差)值为:", mean_absolute_error(scaler_y.inverse_transform(y_test), scaler_y.inverse_transform(lr_y)))#计算预测值与真实值之间的差异MAE(平均绝对误差)值为:0.21875
print("LinearRegression的RMSE(均方根误差)值为:", np.sqrt(mean_squared_error(scaler_y.inverse_transform(y_test), scaler_y.inverse_transform(lr_y))))#计算预测值与真实值之间的差异RMSE(均方根误差)值为:0.53934
print("LinearRegression自带的评估函数评估结果为:", lr.score(X_test, y_test))#计算预测值与真实值之间的差异自带的评估函数评估结果为:0.7777777777777777")
print("-----"*50)

#使用SGDRegessor进行回归预测
sgdr = SGDRegressor(max_iter=10,tol=None)
#使用训练数据进行训练
sgdr.fit(X_train, y_train.ravel())#ravel()将一维数组转换为二维数组
#使用SGDRegressor进行自带的评估函数
print("SGDRegressor自带的评估函数评估结果为:", sgdr.score(X_test, y_test))#计算预测值与真实值之间的差异自带的评估函数评估结果为:0.7777777777777777")

#使用KNeighborsRegressor进行回归预测
knr_uni = KNeighborsRegressor(n_neighbors=5, weights='uniform')#默认参数值n_neighbors为邻居数量,weights为权重
#使用训练数据进行训练
knr_uni.fit(X_train, y_train.ravel())#ravel()将一维数组转换为二维数组
#使用KNeighborsRegressor进行自带的评估函数
print("KNeighborsRegressor自带的评估函数评估结果为:", knr_uni.score(X_test, y_test))#计算预测值与真实值之间的差异自带的评估函数评估结果为:0.7777777777777777")
#uniform与distance的区别:uniform为平均权重,最近邻样本权重相同,distance为距离权重,权重与距离成反比
knr_dis = KNeighborsRegressor(n_neighbors=5, weights='distance')#默认参数值n_neighbors为邻居数量,weights为权重
#使用训练数据进行训练
knr_dis.fit(X_train, y_train.ravel())#ravel()将一维数组转换为二维数组
#使用KNeighborsRegressor进行自带的评估函数
print("KNeighborsRegressor自带的评估函数评估结果为:", knr_dis.score(X_test, y_test))#计算预测值与真实值之间的差异自带的评估函数评估结果为:0.7777777777777777")

#房价预测-支持向量回归
#linear核函数 poly rbf三者的区别:linear为线性核函数,poly为多项式核函数,rbf为径向基核函数
svr_lin= SVR(kernel='linear')#默认参数值kernel为核函数,linear为线性核函数
#使用训练数据进行训练
svr_lin.fit(X_train, y_train.ravel())#ravel()将一维数组转换为二维数组
#使用SVR进行自带的评估函数
print("SVR_linear自带的评估函数评估结果为:", svr_lin.score(X_test, y_test))#计算预测值与真实值之间的差异自带的评估函数评估结果为:0.7777777777777777")

svr_poly= SVR(kernel='poly')#默认参数值kernel为核函数,poly为多项式核函数
#使用训练数据进行训练
svr_poly.fit(X_train, y_train.ravel())#ravel()将一维数组转换为二维数组
#使用SVR进行自带的评估函数
print("SVR_poly自带的评估函数评估结果为:", svr_poly.score(X_test, y_test))#计算预测值与真实值之间的差异自带的评估函数评估结果为:0.7777777777777777")

svr_rbf= SVR(kernel='rbf')#默认参数值kernel为核函数,rbf为径向基核函数
#使用训练数据进行训练
svr_rbf.fit(X_train, y_train.ravel())#ravel()将一维数组转换为二维数组
#使用SVR进行自带的评估函数
print("SVR_rbf自带的评估函数评估结果为:", svr_rbf.score(X_test, y_test))#计算预测值与真实值之间的差异自带的评估函数评估结果为:0.7777777777777777")

#使用DecisionTreeRegressor进行回归预测
dtr = DecisionTreeRegressor()
#使用训练数据进行训练
dtr.fit(X_train, y_train.ravel())#ravel()将一维数组转换为二维数组
#使用DecisionTreeRegressor进行自带的评估函数
print("DecisionTreeRegressor自带的评估函数评估结果为:", dtr.score(X_test, y_test))#计算预测值与真实值之间的差异自带的评估函数评估结果为:0.7777777777777777")


#使用RandomForestRegressor进行回归预测
rfr = RandomForestRegressor(n_estimators=10)#默认参数值n_estimators为决策树的数量
#使用训练数据进行训练
rfr.fit(X_train, y_train.ravel())#ravel()将一维数组转换为二维数组
#使用RandomForestRegressor进行自带的评估函数
print("RandomForestRegressor自带的评估函数评估结果为:", rfr.score(X_test, y_test))#计算预测值与真实值之间的差异自带的评估函数评估结果为:0.7777777777777777")

#使用ExtraTreesRegressor进行回归预测
etr = ExtraTreesRegressor(n_estimators=10)#默认参数值n_estimators为决策树的数量
#使用训练数据进行训练
etr.fit(X_train, y_train.ravel())#ravel()将一维数组转换为二维数组
#使用ExtraTreesRegressor进行自带的评估函数
print("ExtraTreesRegressor自带的评估函数评估结果为:", etr.score(X_test, y_test))#计算预测值与真实值之间的差异自带的评估函数评估结果为:0.7777777777777777")#使用Ra

#使用AdaBoostRegressor进行回归预测
abr = AdaBoostRegressor()
#使用训练数据进行训练
abr.fit(X_train, y_train.ravel())#ravel()将一维数组转换为二维数组
#使用AdaBoostRegressor进行自带的评估函数
print("AdaBoostRegressor自带的评估函数评估结果为:", abr.score(X_test, y_test))#计算预测值与真实值之间的差异自带的评估函数评估结果为:0.7777777777777777")

#使用GradientBoostingRegressor进行回归预测
gbr = GradientBoostingRegressor()
#使用训练数据进行训练
gbr.fit(X_train, y_train.ravel())#ravel()将一维数组转换为二维数组
#使用GradientBoostingRegressor进行自带的评估函数
print("GradientBoostingRegressor自带的评估函数评估结果为:", gbr.score(X_test, y_test))#计算预测值与真实值之间的差异自带的评估函数评估结果为:0.77


  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值