‘壹’ python sklearn里的svm.SVC怎么输出分类概率
fromsklearn.svmimportSVC
model=SVC()
model.fit(X_train,y_train)
model.predict(X_test)#输出类别
model.predict_proba(X_test)#输出分类概率
model.predict_log_proba(X_test)#输出分类概率的对数
‘贰’ 如何利用python使用libsvm
包解压C盘:C:\libsvm-三.一吧二. 要用libsvm自带脚本grid.pyeasy.py,需要官中国载绘图工具gnuplot,解压c盘.进入c:\libsvm\tools目录用文本编辑器(记事本edit都)修改grid.pyeasy.py两文件找其关于gnuplot路径项根据实际路径进行修改并保存 python与libsvm连接(参考SVM习笔记(二)LIBSVMpython使用) 一.打IDLE(pythonGUI)输入>>>importsys>>>sys.version 二.python三二位现字符: (default,Apr一0二0一二,二三:三一:二陆)[MSCv.一500三二bit(Intel)]’ 候LIBSVMpython接口设置液此非简单libsvm-三.一陆文件夹windows文件夹找态链接库libsvm.dll其添加系统目录`C:\WINDOWS\system三二\’即python使用libsvm wk_ad_begin({pid : 二一});wk_ad_after(二一, function(){$('.ad-hidden').hide();}, function(){$('.ad-hidden').show();}); 三.执行例 importos os.chdir('C:\libsvm-三.一吧\python')#请根据实际路径修改 辩盯fromsvmutilimport* y,x=svm_read_problem('../heart_scale')#读取自带数据 m=svm_train(y[:二00],x[:二00],'-c四') p_label,p_acc,p_val=svm_predict(y[二00:],x[二00:],m) ##现结应该确安装optimizationfinished,#iter=二5漆nu=0.三5一一陆一 obj=-二二5.陆二吧9吧四,rho=0.陆三陆一一0nSV=9一,nBSV=四携埋和9 TotalnSV=9一 Accuracy=吧四.二吧5漆%(59/漆0)(classification
‘叁’ 如何利用 Python 实现 SVM 模型
我先直观地阐述我对SVM的理解,这其中不会涉及数学公式,然后给出Python代码。
SVM是一种二分类模型,处理的数据可以分为三类:
线性可分,通过硬间隔最大化,学习线性分类器
近似线性可分,通过软间隔最大化,学习线性分类器
线性不可分,通过核函数以及软间隔最大化,学习非线性分类器
线性分类器,在平面上对应直线;非线性分类器,在平面上对应曲线。
硬间隔对应于线性可分数据集,可以将所有样本正确分类,也正因为如此,受噪声样本影响很大,不推荐。
软间隔对应于通常情况下的数据集(近似线性可分或线性不可分),允许一些超平面附近的样本被错误分类,从而提升了泛化性能。
如下图:
我们可以看到,当支持向量太少,可能会得到很差的决策边界。如果支持向量太多,就相当于每次都利用整个数据集进行分类,类似KNN。‘肆’ python的一个SVM多分类例子
一个SVM的简单例子可以从中窥探奥秘,大家可以更改X的数值,更改Y 的标签名
‘伍’ 如何利用python使用libsvm
把包解压在C盘之中,如:C:\libsvm-3.182. 因为要用libsvm自带的脚本grid.py和easy.py,需要去官网下载绘图工具gnuplot,解压到c盘.进入c:\libsvm\tools目录下,用文本编辑器(记事本,edit都可以)修改grid.py和easy.py两个文件,找到其中关于gnuplot路径的那项,根据实际路径进行修改,并保存 python与libsvm的连接(参考SVM学习笔记(2)LIBSVM在python下的使用) 1.打开IDLE(pythonGUI),输入>>>importsys>>>sys.version 2.如果你的python是32位,将出现如下字符: (default,Apr102012,23:31:26)[MSCv.150032bit(Intel)]’ 这个时候LIBSVM的python接口设置将非常简单。在libsvm-3.16文件饥圆夹下的windows文件夹中找到动态链接库libsvm.dll,将其添加到系统目录,如脊肢漏`C:\WINDOWS\system32\’,即可在python中使用libsvm wk_ad_begin({pid : 21});wk_ad_after(21, function(){$('.ad-hidden').hide();}, function(){$('.ad-hidden').show();}); 3.执樱烂行一个小例子 importos os.chdir('C:\libsvm-3.18\python')#请根据实际路径修改 fromsvmutilimport* y,x=svm_read_problem('../heart_scale')#读取自带数据 m=svm_train(y[:200],x[:200],'-c4') p_label,p_acc,p_val=svm_predict(y[200:],x[200:],m) ##出现如下结果,应该是正确安装了optimizationfinished,#iter=257nu=0.351161 obj=-225.628984,rho=0.636110nSV=91,nBSV=49 TotalnSV=91 Accuracy=84.2857%(59/70)(classification)
‘陆’ python怎么实现opencv3 svm训练模型保存和加载
在做模型训练的时候,尤其是在训练集上做交叉验证,通常想要将模型保存下来,然后放到独立的测试集上测试,下面介绍的是python中训练模型的保存和再使用。
scikit-learn已经有了模型持久化的操作,导入joblib即可
from sklearn.externals import joblib
模型保存
>>> os.chdir("workspace/model_save")>>> from sklearn import svm>>> X = [[0, 0], [1, 1]]>>> y = [0, 1]>>> clf = svm.SVC()>>> clf.fit(X, y) >>> clf.fit(train_X,train_y)>>> joblib.mp(clf, "train_model.m")
通过joblib的mp可以将模型保存到本地,clf是训练的分类器
模型从本地调回
>>> clf = joblib.load("train_model.m")
通过joblib的load方法,加载保存的模型。
然后就可以在测试集上测试了
clf.predit(test_X,test_y)
‘柒’ 如何利用python使用libsvm
准备工具
libsvm软件包;
电脑;
步骤操作
把包解压在C盘之中,如:C:libsvm-3.18;
用libsvm自带的脚本grid.py和easy.py,需要去官网下载绘图工具gnuplot,解压到c盘;
进入c:libsvm ools目录下,用文本编辑器(记事本,edit都可以)修改grid.py和easy.py两个文件,找到其中关于gnuplot路径的那项,根据实际路径进行修改,并保存;
‘捌’ 求python支持向量机数据设置标签代码
以下是使用Python中的Scikit-learn库实现支持向量机(SVM)模型的盯宽数据设置标签代码示例:
from sklearn import svm
# 假设有以下三个样本的数据:
X = [[0, 0], [1, 1], [2, 2]]
y = [0, 1, 1] # 对应每个数据点的标签,凯悔0表示负样本,1表示正样本
# 创建SVM模型
clf = svm.SVC()
# 将数据集(X)和标签(y)作为训练数据来训练模型
clf.fit(X, y)
上述代码中,X是一个二维数组,每个元素都代表一个数据点的特征值,y是一凯孙亮个一维数组,每个元素都代表对应数据点的标签。通过将X和y作为训练数据,可以训练SVM模型并得到分类结果。
‘玖’ python svm 怎么训练模型
支持向量机SVM(Support Vector Machine)是有监督的分类预测模型,本篇文章使用机器学习库scikit-learn中的手写数字数据集介绍使用Python对SVM模型进行训练并对手写数字进行识别的过程。
准备工作
手写数字识别的原理是将数字的图片分割为8X8的灰度值矩阵,将这64个灰度值作为每个数字的训练集对模型进行训练。手写数字所对应的真实数字作为分类结果。在机器学习sklearn库中已经包含了不同数字的8X8灰度值矩阵,因此我们首先导入sklearn库自带的datasets数据集。然后是交叉验证库,SVM分类算法库,绘制图表库等。
12345678910#导入自带数据集from sklearn import datasets#导入交叉验证库from sklearn import cross_validation#导入SVM分类算法库from sklearn import svm#导入图表库import matplotlib.pyplot as plt#生成预测结果准确率的混淆矩阵from sklearn import metrics读取并查看数字矩阵
从sklearn库自带的datasets数据集中读取数字的8X8矩阵信息并赋值给digits。
12#读取自带数据集并赋值给digitsdigits = datasets.load_digits()查看其中的数字9可以发现,手写的数字9以64个灰度值保存。从下面的8×8矩阵中很难看出这是数字9。
12#查看数据集中数字9的矩阵digits.data[9]以灰度值的方式输出手写数字9的图像,可以看出个大概轮廓。这就是经过切割并以灰度保存的手写数字9。它所对应的64个灰度值就是模型的训练集,而真实的数字9是目标分类。我们的模型所要做的就是在已知64个灰度值与每个数字对应关系的情况下,通过对模型进行训练来对新的手写数字对应的真实数字进行分类。
1234#绘制图表查看数据集中数字9的图像plt.imshow(digits.images[9], cmap=plt.cm.gray_r, interpolation='nearest')plt.title('digits.target[9]')plt.show()
从混淆矩阵中可以看到,大部分的数字SVM的分类和预测都是正确的,但也有个别的数字分类错误,例如真实的数字2,SVM模型有一次错误的分类为1,还有一次错误分类为7。