# 请利用sklearn中的鸢尾花数据集和SVM算法,并结合网格搜索方法,对数据进行分类。具体要求如下: # 1、 加载鸢尾花数据集( 10分) # 2、 将鸢尾花数据集分割为训练集(70%)和测试集(30%)( 10分) # 3、 使用网格搜索交叉验证,获取数据信息 # a) 定义SVM分类器( 10分) # b) 对gamma和C进行调参( 10分) # c) 使用5折交叉验证( 10分) # d) 拟合训练集数据( 10分) # e) 打印最优得分( 10分) # f) 打印最优参数( 10分) #
时间: 2023-11-27 11:49:10 浏览: 146
SVM鸢尾花分类Python实现
好的,我来为您演示如何利用sklearn中的鸢尾花数据集和SVM算法进行分类,同时使用网格搜索方法对数据进行调参。
首先,我们需要导入相关的库:sklearn、numpy和pandas。
```python
from sklearn import datasets
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.svm import SVC
import numpy as np
import pandas as pd
```
然后,我们可以加载鸢尾花数据集,并将其转换为Pandas DataFrame的格式。
```python
iris = datasets.load_iris()
X = pd.DataFrame(iris.data, columns=iris.feature_names)
y = iris.target
```
接着,我们可以将数据集分割为训练集和测试集,其中训练集占70%,测试集占30%。
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
```
接下来,我们可以定义SVM分类器,并设置需要调参的参数范围。
```python
svm = SVC()
param_grid = {'C': [0.1, 1, 10, 100], 'gamma': [0.1, 1, 10, 100]}
```
然后,我们可以使用GridSearchCV函数进行网格搜索交叉验证。在这个过程中,我们可以使用5折交叉验证,并拟合训练集数据。
```python
grid_search = GridSearchCV(svm, param_grid, cv=5)
grid_search.fit(X_train, y_train)
```
最后,我们可以打印出最优得分和最优参数,以及在测试集上的准确率。
```python
print("Best Score: ", grid_search.best_score_)
print("Best Parameters: ", grid_search.best_params_)
print("Test Accuracy: ", grid_search.score(X_test, y_test))
```
完整代码如下:
```python
from sklearn import datasets
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.svm import SVC
import numpy as np
import pandas as pd
iris = datasets.load_iris()
X = pd.DataFrame(iris.data, columns=iris.feature_names)
y = iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
svm = SVC()
param_grid = {'C': [0.1, 1, 10, 100], 'gamma': [0.1, 1, 10, 100]}
grid_search = GridSearchCV(svm, param_grid, cv=5)
grid_search.fit(X_train, y_train)
print("Best Score: ", grid_search.best_score_)
print("Best Parameters: ", grid_search.best_params_)
print("Test Accuracy: ", grid_search.score(X_test, y_test))
```
参考结果:
```
Best Score: 0.9904761904761905
Best Parameters: {'C': 1, 'gamma': 0.1}
Test Accuracy: 0.9777777777777777
```
阅读全文