如何使用支持向量机学习非线性数据集( 二 )


# Create a SVC classifier using an RBF kernel svm = SVC(kernel='rbf', random_state=0, gamma=1/100, C=1) # Train the classifier svm.fit(X_xor, y_xor) # Visualize the decision boundaries fig = plt.figure(figsize=(10,10)) plot_decision_regions(X_xor, y_xor, clf=svm) plt.legend(loc='upper left') plt.tight_layout() plt.show()gamma是1 / sigma 。 请记住 , sigma是调节函数 。 因此 , gamma值越小 , sigma值就越大 , 分类器对各个点之间的距离就越不敏感 。
如何使用支持向量机学习非线性数据集
本文插图
让我们把伽玛放大看看会发生什么
# Create a SVC classifier using an RBF kernel svm = SVC(kernel='rbf', random_state=0, gamma=1, C=1) # Train the classifier svm.fit(X_xor, y_xor) # Visualize the decision boundaries fig = plt.figure(figsize=(10,10)) plot_decision_regions(X_xor, y_xor, clf=svm) plt.legend(loc='upper left') plt.tight_layout() plt.show()
如何使用支持向量机学习非线性数据集
本文插图
好像将伽玛值提高100倍可以提高分类器对训练集的准确性 。 把伽马值再乘以10会怎么样呢?
# Create a SVC classifier using an RBF kernel svm = SVC(kernel='rbf', random_state=0, gamma=10, C=1) # Train the classifier svm.fit(X_xor, y_xor) # Visualize the decision boundaries fig = plt.figure(figsize=(10,10)) plot_decision_regions(X_xor, y_xor, clf=svm) plt.legend(loc='upper left') plt.tight_layout() plt.show()
如何使用支持向量机学习非线性数据集
本文插图
这是否意味着如果我们将伽玛提高到10000 , 它将更加准确呢?事实上 , 如果伽玛值太大 , 则分类器最终会对差异不敏感 。
如何使用支持向量机学习非线性数据集
本文插图
让我们增加C 。 C是与整个机器学习数据集的错误分类相关的成本 。 换句话说 , 增加C将增加对整个数据集的敏感性 , 而不仅仅是单个数据点 。
from ipywidgets import interact, interactive, fixed, interact_manual import ipywidgets as widgets warnings.filterwarnings(''ignore'') @interact(x=[1, 10, 1000, 10000, 100000]) def svc(x=1): # Create a SVC classifier using an RBF kernel svm = SVC(kernel='rbf', random_state=0, gamma=.01, C=x) # Train the classifier svm.fit(X_xor, y_xor) # Visualize the decision boundaries fig = plt.figure(figsize=(10,10)) plot_decision_regions(X_xor, y_xor, clf=svm) plt.legend(loc='upper left') plt.tight_layout() plt.show()
如何使用支持向量机学习非线性数据集
本文插图
我们已经找到了参数 , 因此我们的SVM分类器可以成功地将两组点分开 。
最后
【如何使用支持向量机学习非线性数据集】我希望本文能让您对SVM分类器是什么以及如何使用它来学习非线机器学习性数据集有一个直观的认识 。 如果数据是高维的 , 您则无法通过可视化来判断分类器的性能 。 好的做法是根据训练集进行训练 , 并在测试集上使用混淆矩阵或f1-分数等指标 。


推荐阅读