mooc机器学习第七天-分类支持向量机svm.svc

cheflone cheflone     2022-12-03     333

关键词:

1.函数简介

sklearn.svm.SVC(C=1.0, kernel=‘rbf‘, degree=3, gamma=‘auto‘, coef0=0.0, shrinking=True, probability=False,

Tol=0.001, cache_size200, class_weight=None, verbose=False,  max_iter=-1, 

decision_function_shape=None,random_state=None)

参数:

1、C:C-SVC的惩罚参数C默认值是1.0,C越大,相当于惩罚松弛变量,希望松弛变量接近0,即对误分类的惩罚增大,趋向于对训练集全分对的情况,这样对训练集测试时准确率很高,但泛化能力弱。C值小,对误分类的惩罚减小,允许容错,将他们当成噪声点,泛化能力较强。

C一般可以选择为:0.0001 到10000,选择的越大,表示对错误例惩罚程度越大,可能会导致模型过拟合

2、kernel :核函数,默认是rbf,可以是‘linear‘, ‘poly‘, ‘rbf‘, ‘sigmoid‘, ‘precomputed‘ 

    0 – 线性:u‘v

    1 – 多项式:(gamma*u‘*v + coef0)^degree

    2 – RBF函数:exp(-gamma|u-v|^2)

    3 –sigmoid:tanh(gamma*u‘*v + coef0)

数学表达式:

技术图片

3、degree :多项式poly函数的维度,默认是3,选择其他核函数时会被忽略。建议设置为2;

4、gamma :‘rbf‘,‘poly‘和‘sigmoid‘的核系数。当前默认值为‘auto‘,它使用1 / n_features,如果gamma=‘scale‘传递,则使用1 /(n_features * X.std())作为gamma的值。当前默认的gamma‘‘auto‘将在版本0.22中更改为‘scale‘。

5、 coef0 :核函数的常数项。对于‘poly‘和 ‘sigmoid‘有用。

6、probability :默认False。是否启用概率估计。必须在调用fit之前启用它,并且会减慢该方法的速度。

7、shrinking :默认为true,是否采用shrinking heuristic(收缩启发式)方法

8、 tol :默认为1e-3,停止训练的误差值大小,

9、cache_size :默认为200,核函数cache缓存大小

10、 class_weight :dict,‘balanced‘。将类i的参数C设置为SVC的class_weight [i] * C. 如果没有给出,所有类都应该有一个权重。"平衡"模式使用y的值自动调整与输入数据中的类频率成反比的权重n_samples / (n_classes * np.bincount(y))

11、verbose :默认False。启用详细输出。请注意,此设置利用libsvm中的每进程运行时设置,如果启用,则可能无法在多线程上下文中正常运行。

12、max_iter :最大迭代次数。-1为无限制。

13、decision_function_shape :‘ovo‘, ‘ovr‘ or None, default=None3

14、random_state :默认 无。伪随机数生成器的种子在对数据进行混洗以用于概率估计时使用。如果是int,则random_state是随机数生成器使用的种子; 如果是RandomState实例,则random_state是随机数生成器; 如果没有,随机数生成器所使用的RandomState实例np.random。

主要调节的参数有:C、kernel、degree、gamma、coef0。

   

与核函数相对应的libsvm参数建议:

1)对于线性核函数,没有专门需要设置的参数

2)对于多项式核函数,有三个参数。-d用来设置多项式核函数的最高此项次数,也就是公式中的d,默认值是3。-g用来设置核函数中的gamma参数设置,也就是公式中的第一个r(gamma),默认值是1/k(k是类别数)。-r用来设置核函数中的coef0,也就是公式中的第二个r,默认值是0。

3)对于RBF核函数,有一个参数。-g用来设置核函数中的gamma参数设置,也就是公式中的第一个r(gamma),默认值是1/k(k是类别数)。

4)对于sigmoid核函数,两个参数g以及r:gamma一般可选1 2 3 4,coef0选0.2 0.4 0.60.8 1

属性:

support_ :支持向量索引。

support_vectors_ :支持向量。

n_support_ :每一类的支持向量数目

dual_coef_ :决策函数中支持向量的系数

coef_ :赋予特征的权重(原始问题中的系数)。这仅适用于线性内核。

intercept_ :决策函数中的常量。

 

 

2.mooc实例简介

技术图片

 

 

 

技术图片

 

 

 技术图片

 

 

 技术图片

 

 

 技术图片  

 

 

 

 

技术图片

 

 

 技术图片

 

 

 

 

 

技术图片

 

 

技术图片

 

 

 

 技术图片

 

 

3.代码

 

import  numpy as np
import  pandas as pd
from sklearn import  svm
from sklearn import  cross_validation

data=pd.read_csv(‘。/stock/000777.csv‘,encoding=‘gbk‘,
                 parse_dates=[0],index_col=0)#读取数据,一点预处理
# print(data.head())
data.sort_index(0,ascending=True,inplace=True)
# print(data.head())
dayfeature=150
featurenum=5*dayfeature
# print(data.shape[0])
x=np.zeros((data.shape[0]-dayfeature-dayfeature,featurenum+1))
# print(x.shape)
y=np.zeros((data.shape[0]-dayfeature-dayfeature))


# print(data)
#利用range遍历花式索引取值判断赋值
for i in range(0,x.shape[0]):
    x[i, 0:featurenum] = np.array(data[i:i + dayfeature] [[u‘收盘价‘, u‘最高价‘, u‘最低价‘, u‘开盘价‘, u‘成交量‘]]).reshape((1, featurenum))
    x[i, featurenum] = data.ix[i + dayfeature][u‘开盘价‘]

for i in range(x.shape[0]):
    if data.ix[i + dayfeature][u‘收盘价‘] >= data.ix[i + dayfeature][u‘开盘价‘]:
        y[i] = 1
    else:
        y[i] = 0

#调用算法,训练
clf=svm.SVC(kernel=‘rbf‘)
result=[]
for i in range(5):
      x_train,x_test,y_train,y_test=cross_validation.train_test_split(x,y,test_size=0.2)
      clf.fit(x_train,y_train)
      result.append(np.mean(y_test==clf.predict(x_test)))
print("svm classifier accuacy:")
print(result)

  

 

支持向量机算法之鸢尾花特征分类机器学习(代码片段)

...算法是求解凸二次规划的优化算法。Scikitlearn(sklearn)是机器学习中常见 查看详情

支持向量机算法之鸢尾花特征分类机器学习(代码片段)

...算法是求解凸二次规划的优化算法。Scikitlearn(sklearn)是机器学习中常见 查看详情

机器学习实践:基于支持向量机算法对鸢尾花进行分类(代码片段)

摘要:Listitem使用scikit-learn机器学习包的支持向量机算法,使用全部特征对鸢尾花进行分类。本文分享自华为云社区《支持向量机算法之鸢尾花特征分类【机器学习】》,作者:上进小菜猪。一.前言1.1本文原理支... 查看详情

机器学习知识点查漏补缺(支持向量机)

 一、模型概念支持向量机的模型基本模型是建立在特征空间上的最大间隔线性分类器,通过使用核技巧,可以使它成为非线性分类器。当训练数据线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量... 查看详情

机器学习入门之四:机器学习的方法--svm(支持向量机)(转载)

...)    支持向量机算法是诞生于统计学习界,同时在机器学习界大放光彩的经典算法。   支持向量机算法从某种意义上来说是逻辑回归算法的强化:通过给予逻辑回归算法更严格的优化条件,支持向量机算法可以获得... 查看详情

机器学习支持向量机svm

一、最大分类间隔为了保证把数据很好的分开,并且增大对噪声的容忍度,最好是距离分类面的最近分类点,到分类面的距离为最大即求得最大间距的w,并且保证所有点分类正确,还要所有点到分类面的距离和为最小为了计算... 查看详情

机器学习实验五六—支持向量机新闻分类聚类(代码片段)

机器学习实验五—svm新闻分类参考博客:svm新闻分类机器学习实验六-聚类机器学习-聚类参考博客基于划分kmeanshttps://zhuanlan.zhihu.com/p/136498094基于dbscan:参考博主:胡言欢代码:1、导入相关库fromsklearn.clusterimportDBSCANfroms... 查看详情

机器学习:支持向量机

1、间隔与支持向量支持向量机(supportvectormachine)是一种经典的二分类模型,基本模型定义为特征空间中最大间隔的线性分类器,其学习的优化目标便是间隔最大化,因此支持向量机本身可以转化为一个凸二次规划求解的问题。对... 查看详情

《统计学习方法》--支持向量机

《统计学习方法》第七章–支持向量机支持向量机概述支持向量机是一种二类分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器。支持向量机由简至繁依次可分为:线性可分支持向量机,线性支持... 查看详情

机器学习支持向量机svm(上)

...ctorMachine)指的是支持向量机,是常见的一种判别方法。在机器学习领域,是一个有监督的学习模型,通常用来进行模式识别、分类以及回归分析。Vapnik等人在多年研究统计学习理论基础上对线性分类器提出了另一种设计最佳准则... 查看详情

机器学习——支持向量机

支持向量机支持向量机是一种二分类机器学习模型,适用于小样本数据集。下面通过建模,优化方法求解,支持向量机在多分类问题的应用以及支持向量机优缺点四个方面讲:第一部分:建模一.线性可分支持向量机:若数据样... 查看详情

关于机器学习中支持向量机相关问题

前言  在机器学习中,分类问题占了很大一部分,而对于分类问题的处理有很多方法,比如决策树、随机森林、朴素贝叶斯、前馈神经网络等等;而最为常见的分类需求一般是二分类问题,即将样本分为两个集合,然后通... 查看详情

关于机器学习中支持向量机相关问题

前言  在机器学习中,分类问题占了很大一部分,而对于分类问题的处理有很多方法,比如决策树、随机森林、朴素贝叶斯、前馈神经网络等等;而最为常见的分类需求一般是二分类问题,即将样本分为两个集合,然后通... 查看详情

机器学习之支持向量机(supportvectormachine)(更新中...)

支持向量机  支持向量机(supportvectormachines,SVMs)是一种二类分类模型。它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;支持向量机还包括核技巧,这使它成为实质上的非线性分类... 查看详情

机器学习(支持向量机)(代码片段)

有人说,SVM是现成最好的分类器,指的是该分类器不加修改既可直接使用。同时意味着在数据上应用基本形式的SVM分类器可以得到低的错误率的结果。SVM有很多实现,但是最流行的是实现序列最小优化SMO,通过核函数Kernel将SVM扩... 查看详情

机器学习支持向量机(svm)

  感谢中国人民大学胡鹤老师,课程深入浅出,非常好关于SVM可以做线性分类、非线性分类、线性回归等,相比逻辑回归、线性回归、决策树等模型(非神经网络)功效最好传统线性分类:选出两堆数据的质心,并做中垂... 查看详情

支持向量机(svm)|机器学习(代码片段)

目录1.SVM基本原理1.1特点1.2线性二分类问题1.3间隔与支持向量1.4核函数2.实例取数据观察绘制散点图决定使用哪种核函数建立并训练模型绘制图形查看分类效果1.SVM基本原理1.1特点∙\\bullet∙支持向量机(SupportVectorMachine)... 查看详情

机器学习——支持向量机:线性支持向量机和软间隔最大化

前两章讨论支持向量机时,假设了数据最终是能完全被分开,即数据在原始特征空间或映射到高维特征空间之后能够完全正确分类。但是,这样绝对的分类存在一个明显的问题,如果模型中存在异常点,即使... 查看详情