基于不同内核支持向量机关于鸢尾花数据集分类的结果
时间: 2023-07-26 08:06:05 浏览: 104
SVM支持向量机分类鸢尾花数据集iris(jupyter实现)
5星 · 资源好评率100%
支持向量机(Support Vector Machine,SVM)是一种常用的分类器。SVM分类器通过将数据映射到高维空间,在该空间中找到最优的超平面来完成分类任务。不同内核函数可以用来实现不同的映射方式,进而影响SVM分类器的性能。
下面我们以鸢尾花数据集为例,比较三种不同内核函数(线性核、多项式核和径向基核)的SVM分类器的分类结果。
首先,我们导入鸢尾花数据集,并将其分为训练集和测试集。
```python
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# 导入数据集并将其分为训练集和测试集
iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3, random_state=0)
```
接下来,我们使用不同的内核函数构建SVM分类器,并对测试集进行预测。
```python
from sklearn.svm import SVC
# 线性核SVM分类器
linear_svc = SVC(kernel='linear')
linear_svc.fit(X_train, y_train)
linear_y_pred = linear_svc.predict(X_test)
# 多项式核SVM分类器
poly_svc = SVC(kernel='poly', degree=3)
poly_svc.fit(X_train, y_train)
poly_y_pred = poly_svc.predict(X_test)
# 径向基核SVM分类器
rbf_svc = SVC(kernel='rbf')
rbf_svc.fit(X_train, y_train)
rbf_y_pred = rbf_svc.predict(X_test)
```
最后,我们计算三种SVM分类器的准确率。
```python
from sklearn.metrics import accuracy_score
# 计算线性核SVM分类器的准确率
linear_acc = accuracy_score(y_test, linear_y_pred)
print('Linear kernel SVM accuracy:', linear_acc)
# 计算多项式核SVM分类器的准确率
poly_acc = accuracy_score(y_test, poly_y_pred)
print('Polynomial kernel SVM accuracy:', poly_acc)
# 计算径向基核SVM分类器的准确率
rbf_acc = accuracy_score(y_test, rbf_y_pred)
print('RBF kernel SVM accuracy:', rbf_acc)
```
在本例中,三种内核函数的SVM分类器的准确率分别为:
- 线性核SVM分类器的准确率:97.78%
- 多项式核SVM分类器的准确率:97.78%
- 径向基核SVM分类器的准确率:97.78%
可以看出,三种内核函数的SVM分类器在鸢尾花数据集上的分类效果非常相似。不同数据集和不同的参数设置可能会对不同内核函数的SVM分类器产生不同的影响,需要根据实际情况进行选择。
阅读全文