博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
libsvm for python学习(2)
阅读量:6831 次
发布时间:2019-06-26

本文共 2214 字,大约阅读时间需要 7 分钟。

hot3.png

svm_parameter

也是个结构体,成员就是那一大串的参数。这个类初始化的时候主要调用的函数就是解析option。譬如我调用的时候可能会是这样一句话:

param = svm_parameter('-s 3 -c 5 -h 0')

这个字符串在库中被称为option,之所以成为option,是因为有默认值。

解析option的操作其实很简单,类似于switch case语句。

def parse_options(self, options):	if isinstance(options, list):		argv = options	elif isinstance(options, str):		argv = options.split()	else:		raise TypeError("arg 1 should be a list or a str.")	self.set_to_default_values()	self.print_func = cast(None, PRINT_STRING_FUN)	weight_label = []	weight = []	i = 0	while i < len(argv):		if argv[i] == "-s":			i = i + 1			self.svm_type = int(argv[i])		elif argv[i] == "-t":			i = i + 1			self.kernel_type = int(argv[i])		elif argv[i] == "-d":			i = i + 1			self.degree = int(argv[i])		elif argv[i] == "-g":			i = i + 1			self.gamma = float(argv[i])		elif argv[i] == "-r":			i = i + 1			self.coef0 = float(argv[i])		elif argv[i] == "-n":			i = i + 1			self.nu = float(argv[i])		elif argv[i] == "-m":			i = i + 1			self.cache_size = float(argv[i])		elif argv[i] == "-c":			i = i + 1			self.C = float(argv[i])		elif argv[i] == "-e":			i = i + 1			self.eps = float(argv[i])		elif argv[i] == "-p":			i = i + 1			self.p = float(argv[i])		elif argv[i] == "-h":			i = i + 1			self.shrinking = int(argv[i])		elif argv[i] == "-b":			i = i + 1			self.probability = int(argv[i])		elif argv[i] == "-q":			self.print_func = PRINT_STRING_FUN(print_null)		elif argv[i] == "-v":			i = i + 1			self.cross_validation = 1			self.nr_fold = int(argv[i])			if self.nr_fold < 2:				raise ValueError("n-fold cross validation: n must >= 2")		elif argv[i].startswith("-w"):			i = i + 1			self.nr_weight += 1			nr_weight = self.nr_weight			weight_label += [int(argv[i-1][2:])]			weight += [float(argv[i])]		else:			raise ValueError("Wrong options")		i += 1	libsvm.svm_set_print_string_function(self.print_func)	self.weight_label = (c_int*self.nr_weight)()	self.weight = (c_double*self.nr_weight)()	for i in range(self.nr_weight):		self.weight[i] = weight[i]		self.weight_label[i] = weight_label[i]

从这里可以看出,接受的option格式是字符串或者list,显然我最上面的例子是字符串

if isinstance(options, list):	argv = optionselif isinstance(options, str):	argv = options.split()

所以这个类的重点就在于那些参数了。

转载于:https://my.oschina.net/silverhammer/blog/286934

你可能感兴趣的文章
2018最全的iOS面试题及答案
查看>>
问题账户需求分析
查看>>
创新平台年报统计系统——利益相关者描述案例
查看>>
匹配特定数字串
查看>>
我的垂直居中
查看>>
数值分析Matlab绘制三维数据曲面图
查看>>
将Angular6自己定义的模块发布成npm包
查看>>
编译原理LL1文法Follow集算法实现
查看>>
【iOS-Cocos2d游戏开发之二十一 】自定义精灵类并为你的精灵设置攻击帧以及动画创建!【二】...
查看>>
Python学习笔记—第二章—IPython
查看>>
mariadb常用的客服端及其服务端命令
查看>>
实现文件上传的Action
查看>>
ORACLE 编译/安装bbed工具
查看>>
Centos 6.3 下实现ntp时间服务器
查看>>
nfs nobody,nobody 需要在nfs客户端修改从nfs服务器端共享过来的目录怎么办?
查看>>
Not Registered 终极解决方案
查看>>
拳头公司聊天服务架构:服务器篇
查看>>
Android开发者指南(2) —— aapt
查看>>
SLES的桌面应用
查看>>
mongodb-基础-update-remove
查看>>