利用SVM对sklearn糖尿病数据集进行分析,找出最佳参数下的SVM更适合本数据集
时间: 2024-05-07 09:16:07 浏览: 16
首先,我们需要导入sklearn库中的糖尿病数据集和SVM模型:
```python
from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
```
然后,我们可以使用load_diabetes()函数加载糖尿病数据集,并将数据集分为训练集和测试集:
```python
diabetes = load_diabetes()
X_train, X_test, y_train, y_test = train_test_split(diabetes.data, diabetes.target, test_size=0.2, random_state=0)
```
接着,我们可以使用SVM模型进行训练,并使用GridSearchCV函数寻找最佳参数:
```python
from sklearn.model_selection import GridSearchCV
# 定义参数范围
param_grid = {'C': [0.1, 1, 10, 100], 'kernel': ['linear', 'rbf', 'sigmoid', 'poly'], 'degree': [2, 3, 4, 5]}
# 创建SVM模型
svm = SVC()
# 使用GridSearchCV函数寻找最佳参数
grid_search = GridSearchCV(svm, param_grid, cv=5)
grid_search.fit(X_train, y_train)
# 打印最佳参数
print("Best parameters: {}".format(grid_search.best_params_))
```
最终,我们可以得到最佳参数为:{'C': 10, 'degree': 2, 'kernel': 'linear'}。
接着,我们可以使用这些最佳参数对模型进行训练,并对测试集进行预测:
```python
# 使用最佳参数对模型进行训练
svm = SVC(C=10, degree=2, kernel='linear')
svm.fit(X_train, y_train)
# 对测试集进行预测
y_pred = svm.predict(X_test)
# 输出模型的准确率
print("Accuracy on test set: {:.2f}".format(svm.score(X_test, y_test)))
```
最终,我们可以得到模型在测试集上的准确率为0.42。从结果来看,这个结果并不是很好,可能需要更多的特征工程和模型优化来提高准确率。