支持向量机回归及其应用(附Python 案例代码)

使用支持向量机回归估计房价

让我们看看如何使用支持向量机(SVM)的概念构建一个回归器来估计房价。我们将使用sklearn中提供的数据集,其中每个数据点由13个属性定义。我们的目标是根据这些属性估计房价。

引言

支持向量回归(SVR)是一种用于回归任务的机器学习算法。它的目标是找到一个函数,使得数据点偏离该函数的距离在某个阈值内的情况下,该函数尽可能平滑。数学上,SVR 通过解决以下优化问题来实现:
min ⁡ 1 2 ∥ w ∥ 2 + C ∑ i = 1 n max ⁡ ( 0 , ∣ y i − ( w ⋅ x i + b ) ∣ − ϵ ) \min \frac{1}{2} \|w\|^2 + C \sum_{i=1}^n \max(0, |y_i - (w \cdot x_i + b)| - \epsilon) min21w2+Ci=1nmax(0,yi(wxi+b)ϵ)
其中, w w w 是权重向量, b b b 是偏差, C C C 是惩罚参数, ϵ \epsilon ϵ 是不敏感阈值。
在这里插入图片描述

案例代码

# 导入所需的包
import numpy as np
from sklearn import datasets
from sklearn.svm import SVR
from sklearn.metrics import mean_squared_error, explained_variance_score
from sklearn.utils import shuffle

# 加载房价数据集
data = datasets.load_boston()

# 打乱数据以避免分析偏差
X, y = shuffle(data.data, data.target, random_state=7)

# 将数据集按照80/20的比例分割为训练集和测试集
num_training = int(0.8 * len(X))
X_train, y_train = X[:num_training], y[:num_training]
X_test, y_test = X[num_training:], y[num_training:]

# 创建支持向量回归模型并使用线性核
# C 参数表示训练误差的惩罚,如果增大 C 的值,模型将更精细地拟合训练数据
# 这可能会导致过拟合并使其失去泛化能力
# epsilon 参数指定一个阈值,如果预测值与实际值的距离在此阈值内,则不会有训练误差的惩罚
sv_regressor = SVR(kernel='linear', C=1.0, epsilon=0.1)

# 训练支持向量回归模型
sv_regressor.fit(X_train, y_train)

# 评估回归器的性能并打印指标
y_test_pred = sv_regressor.predict(X_test)
mse = mean_squared_error(y_test, y_test_pred)
evs = explained_variance_score(y_test, y_test_pred)
print("\n#### 性能 ####")
print("均方误差 =", round(mse, 2))
print("解释方差分数 =", round(evs, 2))

# 对测试数据点进行预测
test_data = [3.7, 0, 18.4, 1, 0.87, 5.95, 91, 2.5052, 26, 666, 20.2, 351.34, 15.27]
print("\n预测价格:", sv_regressor.predict([test_data])[0])

为了方便读者理解,这里我们对datasets.load_boston()
房价数据部分展示:

CRIMZNINDUSCHASNOXRMAGEDISRADTAXPTRATIOBLSTATPRICE
0.0063218.02.310.00.5386.57565.24.0900129615.3396.904.9824.0
0.027310.07.070.00.4696.42178.94.9671224217.8396.909.1421.6
0.027290.07.070.00.4697.18561.14.9671224217.8392.834.0334.7
0.032370.02.180.00.4586.99845.86.0622322218.7394.632.9433.4
0.069050.02.180.00.4587.14754.26.0622322218.7396.905.3336.2

运行代码应该得到以测试数据对应的房价预测结果:

#### 性能 ####
均方误差 = 15.41
解释方差分数 = 0.82
预测价格: 18.5217801073
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
支持向量机回归预测模型是一种用于进行回归分析的机器学习模型。它的目标是根据给定的训练数据,建立一个可以对新的数据进行预测的模型。 在支持向量机回归模型中,我们首先将数据映射到一个高维特征空间,然后通过寻找一个超平面来拟合数据。这个超平面的选择是基于最大化训练数据与拟合超平面之间的间隔,即间隔最大化。这样可以确保模型对新数据的预测具有较高的准确性。 在MATLAB中实现支持向量机回归预测模型的过程主要是调用MATLAB自带的SVR工具箱。在使用该工具箱时,需要设置一些参数,如核函数类型、正则化参数等,以便根据实际情况进行模型的调整和优化。 模型的建立完成后,可以使用svmpredict()函数对测试集进行预测。在预测过程中,需要将测试集的输出值作为输入,以计算误差。最后,对预测的结果进行反归一化,即将预测值还原为真实值。 这样,我们就可以利用支持向量机回归预测模型对新的数据进行预测,并得到相应的结果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [支持向量机回归预测SVR——MATLAB超详细代码实现过程](https://blog.csdn.net/rouse_xing/article/details/129333869)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [支持向量机:原理与python案例](https://blog.csdn.net/zzh1464501547/article/details/126801279)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

计算小屋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值