求python多元支持向量机多元回归模型最后预测结果导出代码、测试集与真实值R2以及对比图代码

如题所述

这是一个多元支持向量机回归的模型,以下是一个参考的实现代码:
import numpy as npimport matplotlib.pyplot as pltfrom sklearn import svmfrom sklearn.metrics import r2_score
# 模拟数据
np.random.seed(0)
X = np.sort(5 * np.random.rand(80, 1), axis=0)
y = np.sin(X).ravel()
y[::5] += 3 * (0.5 - np.random.rand(16))
# 分割数据
train_X = X[:60]
train_y = y[:60]
test_X = X[60:]
test_y = y[60:]
# 模型训练
model = svm.SVR(kernel='rbf', C=1e3, gamma=0.1)
model.fit(train_X, train_y)
# 预测结果
pred_y = model.predict(test_X)# 计算R2r2 = r2_score(test_y, pred_y)
# 对比图
plt.scatter(test_X, test_y, color='darkorange', label='data')
plt.plot(test_X, pred_y, color='navy', lw=2, label='SVR model')
plt.title('R2={:.2f}'.format(r2))
plt.legend()
plt.show()
上面的代码将数据分为训练数据和测试数据,使用SVR模型对训练数据进行训练,然后对测试数据进行预测。计算预测结果与真实值的R2,最后将结果画出对比图,以评估模型的效果。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-01-29
以下是Python实现多元支持向量机多元回归模型的代码:
# 导入必要的库
import numpy as np
from sklearn.svm import SVR
from sklearn.metrics import r2_score
import matplotlib.pyplot as plt
# 读取训练数据
X_train = np.loadtxt("X_train.csv", delimiter=",")
y_train = np.loadtxt("y_train.csv", delimiter=",")
# 读取测试数据
X_test = np.loadtxt("X_test.csv", delimiter=",")
y_test = np.loadtxt("y_test.csv", delimiter=",")
# 定义多元支持向量机多元回归模型
svr_poly = SVR(kernel='poly', degree=3, C=1.0, epsilon=0.1)
# 训练模型
svr_poly.fit(X_train, y_train)
# 预测
y_pred = svr_poly.predict(X_test)
# 计算R2值
r2 = r2_score(y_test, y_pred)
# 绘制真实值与预测值对比图
plt.scatter(y_test, y_pred)
plt.xlabel('Real Value')
plt.ylabel('Predicted Value')
plt.title('Real Value vs Predicted Value')
plt.show()
# 输出R2值
print("R2:", r2)
第2个回答  2023-01-30
使用Python的Scikit-learn库可以实现多元支持向量机多元回归模型。
from sklearn import datasets
from sklearn.svm import SVR
from sklearn.metrics import r2_score
import matplotlib.pyplot as plt
# 加载数据集
boston = datasets.load_boston()
X = boston.data
y = boston.target
# 分割数据集为训练集和测试集
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# 使用SVR进行训练
svr = SVR(kernel='linear', C=1.0, epsilon=0.2)
svr.fit(X_train, y_train)
# 预测测试集
y_pred = svr.predict(X_test)
# 计算R2分数
r2 = r2_score(y_test, y_pred)
print("R2 score: ", r2)
# 绘制预测值与真实值对比图
plt.scatter(y_test, y_pred)
plt.xlabel("True values")
plt.ylabel("Predictions")
plt.show()
在这里,我们使用了Boston房价数据集,将其分割为训练集和测试集,然后使用SVR进行训练,并对测试集进行预测。最后,我们计算了R2分数并绘制了预测值与真实值的对比图。
如果你想导出预测结果,可以用pandas将结果保存到csv文件中:
import pandas as pd
# 将预测值保存到DataFrame中
df = pd.DataFrame({'y_test':y_test, 'y_pred':y_pred})
# 将数据导出到csv文件中