给出对SVM模型进行优化的代码
时间: 2024-02-12 12:06:08 浏览: 77
以下是一个简单的示例代码,演示如何使用网格搜索法对SVM模型进行优化。
```python
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 定义SVM模型
svm = SVC()
# 定义超参数网格
param_grid = {
'C': [0.1, 1, 10],
'kernel': ['linear', 'poly', 'rbf', 'sigmoid'],
'degree': [2, 3, 4],
'gamma': ['scale', 'auto']
}
# 使用网格搜索法进行超参数调优
grid_search = GridSearchCV(svm, param_grid, cv=5, n_jobs=-1)
grid_search.fit(X_train, y_train)
# 输出最佳超参数组合
print("Best parameters: ", grid_search.best_params_)
# 使用最佳超参数组合的模型进行训练和预测
svm_best = SVC(**grid_search.best_params_)
svm_best.fit(X_train, y_train)
y_pred = svm_best.predict(X_test)
# 输出模型性能指标
acc = accuracy_score(y_test, y_pred)
print("Accuracy: {:.2f}%".format(acc * 100))
```
这段代码中使用了sklearn库中的GridSearchCV方法来进行超参数调优。它会自动对给定的超参数网格进行交叉验证,并返回最佳超参数组合。最后使用最佳超参数组合的模型对测试数据进行预测,并输出模型的准确率。需要注意的是,由于GridSearchCV方法会进行多次模型训练和评估,所以运行时间可能较长。
阅读全文