使用不同的超参数,如kernel = 'linear'(具有C超参数的多种值)或kernel = 'rbf'(具有C超参数和gamma超参数的多种值),尝试一个支持向量回归器。并思考最好的SVR预测器是如何工作的。要求,附上代码,结果图,和分析结果。
时间: 2024-10-17 22:04:26 浏览: 36
在Python中,我们可以使用scikit-learn库来构建支持向量回归(Support Vector Regression, SVR)模型,并通过GridSearchCV对不同超参数进行网格搜索,找到最佳组合。这里是一个简单的例子:
```python
from sklearn.svm import SVR
from sklearn.model_selection import GridSearchCV
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_regression
# 创建样本数据集
X, y = make_regression(n_samples=100, n_features=1, noise=20)
# 定义超参数网格
param_grid = {
"kernel": ['linear', 'rbf'],
"C": [0.1, 1, 10, 100], # 对于线性核(RBF), C控制惩罚力度
"gamma": ["scale", "auto"], # 对于RBF核, gamma影响函数形状
}
# 初始化SVR模型并进行网格搜索
svr = SVR()
grid_search = GridSearchCV(svr, param_grid, cv=5)
grid_search.fit(X, y)
# 获取最佳参数和模型
best_params = grid_search.best_params_
best_svr = grid_search.best_estimator_
# 预测并绘制结果图
y_pred = best_svr.predict(X)
plt.scatter(X, y, label="Data")
plt.plot(X, y_pred, color='red', label="Best SVR Fit")
plt.xlabel("Feature")
plt.ylabel("Target")
plt.legend()
plt.title(f"Best SVR parameters: {best_params}")
plt.show()
# 分析结果
print(f"Best parameters: {best_params}")
print("Mean Absolute Error:", np.mean(np.abs(y - y_pred)))
print("R-squared Score:", best_svr.score(X, y))
阅读全文