SVM超参数对比 可视化案例
时间: 2024-01-10 21:16:32 浏览: 72
作为一名AI语言模型,我无法提供图像可视化案例,但我可以提供代码示例,帮助您比较SVM超参数的影响。
下面是一个简单的示例,展示了如何使用不同的SVM超参数来训练模型,并通过绘制决策边界来可视化结果。
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm, datasets
# 导入鸢尾花数据集
iris = datasets.load_iris()
X = iris.data[:, :2] # 只使用前两个特征
y = iris.target
# 标准化数据
X = (X - np.mean(X, axis=0)) / np.std(X, axis=0)
# 绘制原始数据
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.xlabel('Sepal length')
plt.ylabel('Sepal width')
plt.show()
# 定义不同的超参数
C = [0.1, 1, 10]
gamma = [0.1, 1, 10]
# 绘制不同超参数下的决策边界
fig, sub = plt.subplots(len(C), len(gamma), figsize=(10, 10))
for i in range(len(C)):
for j in range(len(gamma)):
clf = svm.SVC(kernel='rbf', C=C[i], gamma=gamma[j])
clf.fit(X, y)
Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
sub[i][j].contourf(xx, yy, Z, cmap=plt.cm.coolwarm, alpha=0.8)
sub[i][j].scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.coolwarm, edgecolors='black')
sub[i][j].set_xlim(xx.min(), xx.max())
sub[i][j].set_ylim(yy.min(), yy.max())
sub[i][j].set_xticks(())
sub[i][j].set_yticks(())
sub[i][j].set_xlabel('C=' + str(C[i]) + ', gamma=' + str(gamma[j]))
plt.show()
```
上述代码中,我们首先导入了鸢尾花数据集,并提取了前两个特征。然后,我们标准化数据,并绘制了原始数据。
接下来,我们定义了三个不同的C值和三个不同的gamma值,并使用这些超参数训练了SVM模型。然后,我们通过绘制决策边界来可视化结果。
最后,我们得到了一组由不同超参数训练的SVM模型的决策边界可视化结果。可以看到,SVM的超参数对于决策边界的位置和形状有很大的影响,因此在使用SVM时需要仔细选择超参数。
阅读全文