能否提供一个使用支持向量机(SVM)并展示不同核函数(如线性、多项式或径向基函数RBF)的实际例子,包括如何设置参数和解释其工作原理?并做可视化处理
时间: 2024-12-20 15:28:59 浏览: 5
支持向量机 SVM 和 核函数的 MATLAB 程序集
支持向量机(SVM)是一种监督学习算法,常用于分类和回归任务。它通过找到数据的最佳超平面来最大化类别间的间隔,从而达到较高的泛化能力。以下是使用Python的scikit-learn库,结合三个常见的核函数(线性、多项式和RBF)的一个简单示例:
首先,我们需要导入所需的库和模块:
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
```
1. **加载数据集**:
这里我们使用经典的Iris花卉数据集:
```python
iris = datasets.load_iris()
X = iris.data
y = iris.target
```
2. **预处理数据**:
通常需要对数据标准化,以便于各种核函数的表现:
```python
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
```
3. **分割训练集和测试集**:
```python
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)
```
4. **选择不同的核函数及设置参数**:
- 线性核:`kernel='linear'`
- 多项式核(例如,二次多项式核):`kernel='poly'`, `degree=2`
- 径向基函数(RBF)核:`kernel='rbf'`, `gamma='scale'`(默认值,适用于大部分情况)
下面分别创建模型,并训练它们:
```python
models = {
'Linear SVM': SVC(kernel='linear'),
'Polynomial SVM (Degree 2)': SVC(kernel='poly', degree=2),
'RBF SVM': SVC(kernel='rbf')
}
for name, model in models.items():
model.fit(X_train, y_train)
```
5. **预测和评估**:
对测试集进行预测,并计算准确率:
```python
y_pred = {}
for name, model in models.items():
y_pred[name] = model.predict(X_test)
print(f"{name} Accuracy: {np.mean(y_pred[name] == y_test) * 100:.2f}%")
```
6. **可视化决策边界**:
对于二分类问题,我们可以画出每个模型的决策边界。这需要绘制特征空间的网格,并在网格上评估每个模型的响应(通常是概率)。由于这里不直接给出可视化代码,你可以利用matplotlib或其他可视化工具如seaborn,使用`plt.contourf`绘制决策区域。
阅读全文