机器学习 SVM sklearn

SVM回归

代码:

import numpy as np
from sklearn import svm
import matplotlib.pyplot as plt
N = 50
np.random.seed(0)

x = np.sort(np.random.uniform(0, 6, N), axis=0)
y = 2*np.sin(x) + 0.1*np.random.randn(N)
x = x.reshape(-1, 1)
svr_rbf = svm.SVR(kernel='rbf', gamma=0.2, C=100)
'''C和gamma找到最优方式如下
model = svm.SVR(kernel='rbf')
c_can = np.logspace(-2, 2, 10)
gamma_can = np.logspace(-2, 2, 10)
svr = GridSearchCV(model, param_grid={'C': c_can, 'gamma': gamma_can}, cv=5)
svr.fit(x, y)
print '验证参数:\n', svr.best_params_
'''
svr_rbf.fit(x, y)svr_linear = svm.SVR(kernel='linear', C=100)svr_linear.fit(x, y)svr_poly = svm.SVR(kernel='poly', degree=3, C=100)svr_poly.fit(x, y)
x_test = np.linspace(x.min(), 1.5*x.max(), 100).reshape(-1, 1)
y_rbf = svr_rbf.predict(x_test)
y_linear = svr_linear.predict(x_test)
y_poly = svr_poly.predict(x_test)
matplotlib.rcParams['font.sans-serif'] = [u'SimHei']
matplotlib.rcParams['axes.unicode_minus'] = False
plt.figure(figsize=(9, 8), facecolor='w')#可选 创建绘图对象9宽8高
plt.plot(x_test, y_rbf, 'r-', linewidth=1, label='RBF Kernel')#支持颜色bgrcmykw
plt.plot(x_test, y_linear, 'g-', linewidth=2, label='Linear Kernel')#支持线型-|--|-.|:|.|,|o|v|^|<|>|等
plt.plot(x_test, y_poly, 'b-', linewidth=2, label='Polynomial Kernel')
plt.plot(x, y, 'mo', markersize=6)
#散点图与plot使用类型
plt.scatter(x[svr_rbf.support_], y[svr_rbf.support_], s=130, c='r', marker='*', label='RBF Support Vectors')
plt.legend(loc='lower left')#显示图示
plt.title(u'回归SVR', fontsize=16)
plt.xlabel('X')
plt.ylabel('Y')
plt.grid(True)
plt.show()

SVM分类

代码:
import numpy as np
from sklearn import svm
import matplotlib as mpl
import matplotlib.colors
import matplotlib.pyplot as plt
# 分类器
clfs = [svm.SVC(C=0.3, kernel='linear'),
       svm.SVC(C=10, kernel='linear'),
       svm.SVC(C=5, kernel='rbf', gamma=1),
       svm.SVC(C=5, kernel='rbf', gamma=4)]
for i, clf in enumerate(clfs):
    clf.fit(x, y)
    y_hat = clf.predict(x)
    print '支撑向量的数目:', clf.n_support_
    print '支撑向量的系数:', clf.dual_coef_
    print '支撑向量:', clf.support_

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SVM(支持向量机)是机器学习中一种常用的分类算法。在sklearn中,使用SVM时可以通过设置超参数来控制算法的行为和性能。下面是一些常见的SVM超参数及其详细说明: 1. C:控制误分类点的惩罚力度,C值越大,对误分类点的惩罚越大,模型复杂度越高。默认值为1.0。 2. kernel:指定SVM使用的核函数,默认为rbf(径向基函数),也可以选择linear、poly、sigmoid等。不同的核函数对应不同的特征映射方式,可以对不同的数据集进行优化。 3. degree:指定多项式核函数的阶数,默认为3,只有当kernel为‘poly’时才有意义。 4. gamma:控制核函数的宽度,gamma值越小,核函数的曲线越平缓,模型复杂度越低。默认值为‘scale’,表示gamma值为1 / (n_features * X.var())。 5. coef0:控制核函数中常数项的影响力度,默认值为0。 6. shrinking:是否开启缩减启发式,默认为True。缩减启发式可以加速模型的训练,但可能会影响模型的精度。 7. probability:是否开启概率估计,默认为False。开启概率估计可以输出每个样本属于每个类别的概率值,但会增加模型的计算复杂度。 8. tol:控制模型的收敛精度,默认值为1e-3。 9. class_weight:设置每个类别的权重,默认为None。可以通过设置不同的权重来解决类别不平衡问题。 以上是一些常见的SVM超参数及其详细说明,使用SVM时应根据实际情况选择合适的超参数来构建模型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值