『sklearn学习』不同的 SVM 分类器

#! usr/bin/env python
# coding:utf-8

"""
__author__ = "LCG22"
__date__ = "2016-12-5"
"""

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

h = 0.02

C = 1.0
svc = svm.SVC(kernel="linear", C=C).fit(X, y)
rbf_svc = svm.SVC(kernel="rbf", gamma=0.7, C=C).fit(X, y)
poly_svc = svm.SVC(kernel="poly", degree=3, C=C).fit(X, y)
lin_svc = svm.LinearSVC(C=C).fit(X, y)

X_min, X_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(X_min, X_max, h),
                     np.arange(y_min, y_max, h))

titles = ['SVC with linear kernel',
          'LinearSVC(linear kernel)',
          'SVC with RBF kernel',
          'SVC with polynomial(degree 3) kernel']

for i, clf in enumerate((svc, lin_svc, rbf_svc, poly_svc)):
    plt.subplot(2, 2, i+1)
    plt.subplots_adjust(wspace=0.4, hspace=0.4)

    test_x = np.c_[xx.ravel(), yy.ravel()]
    Z = clf.predict(test_x)

    Z = Z.reshape(xx.shape)
    plt.contourf(xx, yy, Z, cmap=plt.cm.coolwarm, alpha=0.8)

    plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.coolwarm)
    plt.xlabel("Sepal length")
    plt.ylabel("Sepal width")
    plt.xlim(xx.min(), xx.max())
    plt.ylim(yy.min(), yy.max())
    plt.xticks(())
    plt.yticks(())
    plt.title(titles[i])

plt.show()

scikit-learn中的支持向量机(SVM)模型可以用于多分类问题。SVM是一种监督学习算法,用于将数据点分配到不同的类别中。在sklearn中,我们可以使用SVC类来实现SVM多分类。 SVC实现了一对一(one-vs-one)方法和一对多(one-vs-rest)方法来解决多分类问题。对于一对一方法,模型在每次训练中将一对类别作为正样本,其他类别作为负样本,然后通过训练N*(N-1)/2个分类器(N为类别数)来得到最终的分类结果。对于一对多方法,模型在每次训练中将一个类别作为正样本,其他类别作为负样本,然后通过训练N个分类器来得到最终的分类结果。 在使用SVC进行多分类时,我们需要先选择合适的内核函数,如线性、多项式或高斯核等。然后,可以通过设置参数C来调整模型的正则化强度。较小的C值表示较强的正则化,有助于避免过拟合;较大的C值表示较弱的正则化,有助于更好地拟合训练数据。 在训练SVC模型之后,我们可以使用predict方法对新的数据进行分类预测。模型会根据训练得到的决策边界将数据点分配到不同的类别中。 总之,sklearn的SVC模块提供了多种方法来处理SVM多分类问题。根据具体的问题和数据集情况,我们可以选择合适的方法和参数来训练和使用模型。通过合理地选择内核函数和调整正则化参数,我们可以得到较好的多分类结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值