能否提供一个实际示例,展示如何使用支持向量机(SVM)技术处理非线性可分的数据集,并通过特征工程或核方法将其转换到高维空间以便有效分类?
时间: 2024-11-03 17:16:47 浏览: 16
SVM.rar_SVM_SVM 分类_SVM分类_coverfhq_支持向量机
当然可以。假设我们有一个非线性可分的鸢尾花数据集(Iris dataset),其中花瓣长度、宽度等属性用来区分三种不同的鸢尾花种类。在这个场景下,我们可以使用支持向量机(SVM)来进行分类。
首先,导入必要的库:
```python
import numpy as np
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
```
然后加载并预处理数据:
```python
# 加载鸢尾花数据集
iris = datasets.load_iris()
X = iris.data
y = iris.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 数据标准化,这是特征工程的一部分,有助于提高SVM性能
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
```
接下来,我们使用`SVC`中的`kernel='rbf'`(Radial Basis Function,径向基函数)作为核方法,它会自动将数据映射到高维空间,使得原本线不可分的数据变得线性可分:
```python
# 使用RBF核的SVM
svm_model = SVC(kernel='rbf')
svm_model.fit(X_train, y_train)
```
最后,评估模型:
```python
accuracy = svm_model.score(X_test, y_test)
print("Accuracy:", accuracy)
```
在这个例子中,通过选择RBF核和合适的参数调整,SVM能够在高维特征空间中找到一个最优的超平面来分割数据,实现了对非线性可分数据的有效分类。
阅读全文