- 一、libsvm的安装
- 二、基本介绍
- 三、构建数据集并获得决策模型
- 四、总结
- 五、参考
-
libsvm可以选择主流方式,选择进入官网下载即可,就算不用这个包也需要下载,需要使用一个txt文件构建数据
-
也可以选择下载whl文件,利用pip安装,点这里
- 例子代码
from libsvm.python.svmutil import * y, x = [1,-1], [{1:1, 2:1}, {1:-1,2:-1}] # 输入的数据 options = '-t 0 -c 4 -b 1' # 训练参数设置 model = svm_train(y,x,options) # 进行训练 yt = [1] xt = [{1:1, 2:1}] p_label, p_acc, p_val = svm_predict(yt, xt, model) # 使用得到的模型进行预测 print(p_label)
- 例子说明
y: 输入的数据样本对应的标签
x: 输入的样本的属性值,其中每一个样本的格式是一个字典类型,键值对中键是一个索引值,值是对应的数据属性值 options: 训练的一些参数设置,主要有以下的一些设置 -s SVM的类型(svm_type) 0 -- C-SVC(默认) 使用惩罚因子(Cost)的处理噪声的多分类器 1 -- nu-SVC(多分类器) 按照错误样本比例处理噪声的多分类器 2 -- one-class SVM 一类支持向量机,可参见"SVDD"的相关内容 3 -- epsilon-SVR(回归) epsilon支持向量回归 (也就是使用 E-不敏感损失函数进行回归) 4 -- nu-SVR(回归) -t 核函数类型(kernel_type) 0 -- linear(线性核): u'*v 1 -- polynomial(多项式核): (gamma*u'*v + coef0)^degree 2 -- radial basis function(RBF,径向基核/高斯核): exp(-gamma*|u-v|^2) 3 -- sigmoid(S型核): tanh(gamma*u'*v + coef0) 4 -- precomputed kernel(预计算核): 核矩阵存储在training_set_file中 下面是调整SVM或核函数中参数的选项: -d 调整核函数的degree参数,默认为3 -g 调整核函数的gamma参数,默认为1/num_features -r 调整核函数的coef0参数,默认为0 -c 调整C-SVC, epsilon-SVR 和 nu-SVR中的Cost参数,默认为1(就是优化问题中的那个C) -n 调整nu-SVC, one-class SVM 和 nu-SVR中的错误率nu参数,默认为0.5 -p 调整epsilon-SVR的loss function中的epsilon参数,默认0.1 -m 调整内缓冲区大小,以MB为单位,默认100 -e 调整终止判据,默认0.001 -wi 调整C-SVC中第i个特征的Cost参数 调整算法功能的选项: -b 是否估算正确概率,取值0 - 1,默认为0 -h 是否使用收缩启发式算法(shrinking heuristics),取值0 - 1,默认为0 -v 交叉校验 -q 静默模式三、构建数据集并获得决策模型
- 手工部署数据集,解压刚刚下载的压缩包,进入windows文件夹,打开svmtoy.exe文件
- 在打开的exe点击点类似左边的图一般,弄好了之后点击save保存在txt文件里,最好弄两份,一份用来训练,一份用来检测准确度- 文件的格式如下图,第一类时分类,后面的冒号前面的1,2指的是特征
- 先导入包
from libsvm.svmutil import * from libsvm.svm import * import scipy.spatial
- 这里读取数据,svm_read_problem函数的作用是读取刚刚生成的文件并返回合适的格式便于训练
#根据文件路径直接返回要使用的数据格式 label,data= svm_read_problem('..\source\iris.txt')#训练数据 p_label,p_data=svm_read_problem('..\source\predict.txt')#预测数据
- 设置训练参数
para ='-t 1 -c 4 -b 1' ''' -t 0为线性核 1为多项式核 2为高斯核(默认) '''
- 训练并将模型保存在文件里,同时测试准确度
#多项式核 model=svm_train(label,data,para) svm_save_model('..\source\multi.txt',model) acc=svm_predict(p_label,p_data,model)
- 文件里的内容
- 高斯核也是一样,不过将para的里面-t 对应的值改为2
para ='-t 2 -c 4 -b 1' ''' -t 0为线性核 1为多项式核 2为高斯核(默认) '''
- 训练并保存模型进文件中
model=svm_train(label,data,para) svm_save_model('..\source\gaosi.txt',model) acc=svm_predict(p_label,p_data,model)
- 文件内容,备注与刚刚的一样,这份就不写了
- libsvm的使用与sklearn里的svm使用一样方便,libsvm对于模型的描述相较于sklearn来说更全面一点,不过使用libsvm需要注意数据的格式
libsvm for python 安装
LIBSVM 在 python 环境下的使用
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)