python示例SVR来做回归预测并进行参数调整和模型优化和效果可视化
时间: 2024-03-24 09:38:14 浏览: 167
好的,这里是一个更完整的示例,使用SVR来做回归预测,并进行参数调整和模型优化和效果可视化。
首先,我们需要导入所需的库和数据集。这里我们使用sklearn自带的波士顿房价数据集。
```python
from sklearn.datasets import load_boston
from sklearn.svm import SVR
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.metrics import r2_score, mean_squared_error
import numpy as np
import matplotlib.pyplot as plt
# 加载数据集
boston = load_boston()
# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(boston.data, boston.target, test_size=0.2, random_state=42)
```
接下来,我们使用GridSearchCV来进行参数调整和模型优化。
```python
# 定义参数范围
params = {'C': np.logspace(-3, 3, 7), 'epsilon': np.logspace(-3, 3, 7)}
# 初始化SVR
svr = SVR(kernel='linear')
# 使用GridSearchCV来进行参数调整和模型优化
grid_svr = GridSearchCV(svr, params, cv=5, n_jobs=-1, verbose=1, scoring='neg_mean_squared_error')
grid_svr.fit(X_train, y_train)
# 输出最优参数
print('Best params:', grid_svr.best_params_)
```
然后,我们可以使用最优参数来训练模型,并进行预测。
```python
# 使用最优参数训练模型
svr_best = SVR(kernel='linear', C=grid_svr.best_params_['C'], epsilon=grid_svr.best_params_['epsilon'])
svr_best.fit(X_train, y_train)
# 预测结果
y_pred = svr_best.predict(X_test)
```
接下来,我们可以使用r2_score和mean_squared_error来评估模型的性能。
```python
# 评估模型性能
r2 = r2_score(y_test, y_pred)
mse = mean_squared_error(y_test, y_pred)
print('R2 score: {:.2f}'.format(r2))
print('MSE: {:.2f}'.format(mse))
```
最后,我们可以使用matplotlib来可视化预测结果与真实值的对比。
```python
# 可视化预测结果
plt.scatter(y_test, y_pred)
plt.plot([0, 50], [0, 50], '--k')
plt.xlabel('True values')
plt.ylabel('Predictions')
plt.tight_layout()
plt.show()
```
完整代码如下:
```python
from sklearn.datasets import load_boston
from sklearn.svm import SVR
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.metrics import r2_score, mean_squared_error
import numpy as np
import matplotlib.pyplot as plt
# 加载数据集
boston = load_boston()
# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(boston.data, boston.target, test_size=0.2, random_state=42)
# 定义参数范围
params = {'C': np.logspace(-3, 3, 7), 'epsilon': np.logspace(-3, 3, 7)}
# 初始化SVR
svr = SVR(kernel='linear')
# 使用GridSearchCV来进行参数调整和模型优化
grid_svr = GridSearchCV(svr, params, cv=5, n_jobs=-1, verbose=1, scoring='neg_mean_squared_error')
grid_svr.fit(X_train, y_train)
# 输出最优参数
print('Best params:', grid_svr.best_params_)
# 使用最优参数训练模型
svr_best = SVR(kernel='linear', C=grid_svr.best_params_['C'], epsilon=grid_svr.best_params_['epsilon'])
svr_best.fit(X_train, y_train)
# 预测结果
y_pred = svr_best.predict(X_test)
# 评估模型性能
r2 = r2_score(y_test, y_pred)
mse = mean_squared_error(y_test, y_pred)
print('R2 score: {:.2f}'.format(r2))
print('MSE: {:.2f}'.format(mse))
# 可视化预测结果
plt.scatter(y_test, y_pred)
plt.plot([0, 50], [0, 50], '--k')
plt.xlabel('True values')
plt.ylabel('Predictions')
plt.tight_layout()
plt.show()
```
注意:这只是一个简单的示例,实际应用中需要根据具体情况进行参数调整和模型优化。
阅读全文