python实现SVM支持向量机回归预测算法

在Python中,我们可以使用scikit-learn库来实现支持向量机(SVM)的回归预测算法。scikit-learn提供了SVR(Support Vector Regression)类来实现这一功能。以下是一个简单的示例,展示了如何使用SVR进行回归预测。

pip install scikit-learn
# 导入必要的库
import numpy as np
from sklearn.svm import SVR
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt
# 生成一些模拟数据
np.random.seed(0)
X = np.sort(5 * np.random.rand(40, 1), axis=0)
y = np.sin(X).ravel()
# 添加一些噪声
y[::5] += 3 * (0.5 - np.random.rand(8))
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建SVR模型
# kernel可以是'linear', 'poly', 'rbf', 'sigmoid', 'precomputed' 或自定义的核函数
svr_rbf = SVR(kernel='rbf', C=100, gamma='auto')
# 训练模型
svr_rbf.fit(X_train, y_train)
# 预测测试集
y_pred = svr_rbf.predict(X_test)
# 计算并打印均方误差
mse = mean_squared_error(y_test, y_pred)
print(f"Mean Squared Error: {mse}")
# 可视化结果
plt.scatter(X_train, y_train, color='darkorange', label='data')
plt.plot(X_test, y_pred, color='navy', lw=2, label='SVR (RBF kernel) prediction')
plt.xlabel('data')
plt.ylabel('target')
plt.title('Support Vector Regression')
plt.legend()
plt.show()

在这个例子中,我们首先生成了一些模拟数据,这些数据是sin函数的值加上一些随机噪声。然后,我们将数据分为训练集和测试集,并创建了一个使用RBF(径向基函数)核的SVR模型。接着,我们训练模型并在测试集上进行预测,最后计算了预测的均方误差(MSE)并绘制了结果图。

可以通过调整SVR的参数(如Cgamma)来优化模型的性能。C是正则化参数,gamma定义了单个训练样本的影响达到最大的距离(对于RBF、poly和sigmoid核)。对于不同的数据集和问题,最佳参数可能会有所不同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

孺子牛 for world

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

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

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

打赏作者

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

抵扣说明:

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

余额充值