使用三种不同的核函数(回归)对Boston房价进行预测,同时对测试数据做出预测

使用核函数的SVR预测Boston房价
该博客通过加载Boston房价数据集,利用支持向量机(SVR)进行回归预测,分别采用线性、多项式和径向基函数(RBF)核函数进行模型训练,并对测试数据进行预测,通过R²得分、均方误差和绝对平均误差评估模型性能。
from sklearn.datasets import load_boston
from sklearn.svm import SVR
from sklearn.cross_validation import train_test_split
from sklearn.metrics import r2_score,mean_squared_error,mean_absolute_error
from sklearn.preprocessing import StandardScaler
#导入数据
boston = load_boston()
#查看数据信息
print(boston.DESCR)
X = boston.data
y = boston.target 
#对数据进行分割
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.25,random_state=33)
ss_X = StandardScaler()
ss_y =StandardScaler()
#分别对训练和测试数据的特征及目标值进行标准化处理
X_train = ss_X.fit_transform(X_train)
X_test = ss_X.transform(X_test)
y_train = ss_y.fit_transform(y_train)
y_test = ss_y.transform(y_test)
#使用三种不同的核函数配置的支持向量机回归模型进行训练,并对测试数据进行预测
#1.采用线性核函数配置的支持向量机进行回归训练
linear_svr =  SVR(kernel='linear')
linear_svr.fit(X_train,y_train)
linear_svr_predict = linear_svr.predict(X_test)
#2.使用多项式核函数配置的支持向量机进行训练
poly_svr =
对波士顿房价进行预测时,普通线性回归、岭回归和 Lasso 回归各有特点。 波士顿房价数据集包含 506 个样本,每个样本有 13 个特征变量和该地区的平均房价房价与多个特征变量相关。可以先使用一元线性回归与多个特征建立线性方程,观察模型预测效果,再使用多元线性回归进行房价预测 [^1]。 普通线性回归是最基础的回归方法,但在处理存在病态数据或容易过拟合的情况时表现不佳。 岭回归通过在损失函数中加入 L2 正则化项,使得回归得到的回归系数更符合实际、更可靠,能让估计参数的波动范围变小,变得更稳定,在存在病态数据偏多的研究中有较大的实用价 [^3]。 Lasso 回归则在损失函数中加入 L1 正则化项,它和岭回归都可解决标准线性回归的过拟合问题,但 Lasso 可以用来做特征选择,更容易使得权重变为 0,而岭回归更容易使得权重接近 0。从贝叶斯角度看,Lasso(L1 正则)等价于参数的先验概率分布满足拉普拉斯分布,而岭回归(L2 正则)等价于参数的先验概率分布满足高斯分布 [^3]。 以下是使用 Python 实现的示例代码: ```python from sklearn.datasets import load_boston from sklearn.linear_model import LinearRegression, Ridge, Lasso from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error, r2_score # 加载波士顿房价数据 boston = load_boston() data = boston.data target = boston.target # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=42) # 普通线性回归 linear_reg = LinearRegression() linear_reg.fit(X_train, y_train) linear_pred = linear_reg.predict(X_test) linear_mse = mean_squared_error(y_test, linear_pred) linear_r2 = r2_score(y_test, linear_pred) # 岭回归 ridge_reg = Ridge(alpha=1.0) ridge_reg.fit(X_train, y_train) ridge_pred = ridge_reg.predict(X_test) ridge_mse = mean_squared_error(y_test, ridge_pred) ridge_r2 = r2_score(y_test, ridge_pred) # Lasso 回归 lasso_reg = Lasso(alpha=0.1) lasso_reg.fit(X_train, y_train) lasso_pred = lasso_reg.predict(X_test) lasso_mse = mean_squared_error(y_test, lasso_pred) lasso_r2 = r2_score(y_test, lasso_pred) print(f"普通线性回归 - MSE: {linear_mse}, R2: {linear_r2}") print(f"岭回归 - MSE: {ridge_mse}, R2: {ridge_r2}") print(f"Lasso 回归 - MSE: {lasso_mse}, R2: {lasso_r2}") ``` 通过比较均方误差(MSE)和决定系数(R2)等评估指标,可以看出不同回归方法的预测效果。一般来说,MSE 越小、R2 越接近 1,说明模型的预测效果越好。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值