求ADD函数优化算法 测试函数,不会T T,研究一天了,头晕的~下面是CLASS POLYNOMIAL 和MAIN函数

求一个类Polynimial多项式的函数_百度知道机器学习(25)
sklearn中的SVM算法使用了liblinear和libsvm两个包,而且模型参数略有区别。
在sklearn中,SVM有SVC和SVR之分,且有四种核函数如下,所以在SVM的参数中有些模型需要,有些模型不需要。
linear:&.polynomial:&.&&is
specified by keyword&degree,&&by&coef0.rbf:&.&&is
specified by keyword&gamma, must be greater than 0.sigmoid (),
where&&is specified by&coef0.
sklearn中SVM模型的参数(函数)很多,以svm.SVC.linear为例,有如下这些:
linear.C(正则项惩罚因子) & & & & & & & & & & & &linear.degree &(polynomial独有,默认为3次多项式)
linear.max_iter(最大跌打次数) & & & & & & & & linear.random_state
linear.cache_size(运行内存大小) & & & & & & & linear.dual_coef_ &(对偶函数的系数,在计算sigmoid概率时用)
linear.n_support_ &(支持向量个数) & & & & & & linear.score
linear.class_weight & & & & & & linear.epsilon & & & & & & & & &linear.nu & & & & & & & & & & & linear.set_params
linear.class_weight_ & & & & & &linear.fit(函数,用于模型训练) & & & & & & & & & & &l
inear.predict &(函数,用于模型预测) & & & & & & & &linear.shape_fit_
linear.classes_ & & & & & & & & linear.fit_status_ & & & & & & &linear.predict_log_proba(log概率值预测) & & & &linear.shrinking
linear.coef0 &(polynomial/sigmoid使用) & & & & & & & & &linear.gamma & & & & & & & & & &
linear.predict_proba(概率值预测) & & & & & &linear.support_(支持向量index)
linear.coef_ & (各个特征权重,即预测的w) & & & & & & & & linear.get_params & & & & & & &&
linear.probA_ & & & & & & & & &
linear.probB_& linear.support_vectors_
linear.decision_function(函数,计算决策值) & & & &linear.intercept_ &(截距,即预测的b,libsvm中为rho) & & & & & & & & & & &
linear.tol(模型训练的容错值)linear.decision_function_shape &linear.kernel(kernel类型) & & & & & & & & &&
linear.probability(True/False,是否设置可以计算概率值,略微会影响速度) & & & & & & &linear.verbose
决策函数的计算linear.decision_function
因为线性核函数最终预测的法平面为y=linear.coef_ &* X +&linear.intercept_
&, 而点X到法平面的距离为
|linear.coef_ &* X +&linear.intercept_|
/ ||linear.coef_||,决策函数并没有采用距离计算,而是,直接:
decision_function
=&linear.coef_ &* X +&linear.intercept_,其若大于0则label预测为1,否则预测为0。
根据SKLearn中决策函数的定义:
之所以可以直接使用&linear.coef_
&* X +&linear.intercept_计算,是因为linear.coef_
为linear.dual_coef_ (为一个n维向量,n为选取的支持向量的个数)和linear.support_vectors_(二位向量[支持向量个数,特征个数])的内积,最终的内积linear.coef_为大小等于特征个数的向量。
关于libsvm可以参考如下:
http://my.oschina.net/u/1461744/blog/209104
最近在看的资料里涉及到计算 点到支持向量机分类超平面的距离 这一点内容,我使用的svm是libsvm。
由于是新手,虽然看了一些资料,但中英转换误差等等原因导致经常出现理解错误,因此对libsvm的了解是磕磕绊绊。在摸索libsvm各种返回值的意义和运用它产生的结果文件过程中绕了不少弯。
最开始接触这个问题的解答是在libsvm本身的faq中:
Q: How do I get the distance between a point and the hyperplane?
The distance is |decision_value| / |w|. We have |w|^2 = w^Tw = alpha^T Q alpha = 2*(dual_obj + sum alpha_i). Thus in svm.cpp please find the place where we calculate the dual objective value (i.e., the subroutine Solve()) and add a statement to print w^Tw.
这里Q不知道是什么东西,不过至少可以知道 &
distance=|decision_value|/|w|=|decision_value|/sqr(2*(dual_obj+sum(αi))
但是,decision_value到底是神马!dual_obj和sum(αi)到底在哪儿!!初学者博主很想咆哮有木有!!!
那我们先来看看从libsvm的返回值和结果文件中都能得到什么东西。
首先,在训练模型的时候(就是用svm_train()这个函数的时候),能在终端得到这些返回值(我写python程序都是在终端运行):
& & #iter:迭代次数
& & nu:选择的核函数类型的参数
& &&obj:svm文件转换成的二次规划求解得到的最小值(这里混入了奇怪的东西是不是,没错!隐藏的这么深的就是obj,看看上面的距离公式)
& & rho:决策函数的偏置项b(决策函数f(x)=w^T*x+b)
& & nSV:标准支持向量的个数(0&αi&c)
& & nBSV:边界上的支持向量的个数(αi=c)
& & Total nSV:支持向量的总个数(二分类的话就等于nSV,多分类的话就是多个分界面上nSV的和)
我才不会告诉你刚才这些返回值的解读是来自这里:
接下来再看训练模型所生成的model文件,其中的信息包括:
& & svm_type c_svc & & & & & (svm的种类,取的默认值)
& & kernel_type rbf & & & & & (核函数的类型,这里取的默认值)
& & gamma 0.0117647 & &(参数γ)
& & nr_class 2 & & & & & & &(几分类,我这里做的是2分类)
& & total_sv 1684
& & rho -0.956377
& & label 0 1 & & & & & & & (两种类别的标识)
& &(所有支持向量中两种类别各自占了多少)
& & SV & & & & & & & (哦哦,以下就是真正的支持向量啦,看看长什么样)
& &&0.129&1:39 2:2 3:3 。。。。
& & 0. 3:3 4:3 。。。。
& & 数据格式都是 前面一个数+空格+向量
& & 前面这个数是什么捏?它就是我们苦苦寻找的α啊!! &后面的向量不用多说,就是支持向量本尊喽,这里跟训练数据不同的是它的存储格式,稀疏向量存储的方式,把值为0的剔掉不记录,比如这里
& & 1:11 3:3 4:3。。。。
其实是 &1:11 2:0 3:3 4:3。。。。
& & 到现在为止我们的obj和α都出现啦,现在就剩decision_value啦。其实这个时候我们就可以算出分类超平面的值了:
& & f(x)=w^T*x+b
& & w=∑αi*yi*αi&后面这个绿色标注的代表向量(这里的表达式参见这位写的svm资料,不错哦),这样α知道了,b知道了(就是上面的rho),分类超平面方程就得到了,根据空间中点到面的距离d=|f(x)|/|w|,把要考察的点x带入,是不是!!计算出来啦!!!
& &不过有时候想偷懒,不想自己计算|f(x)|怎么办?
& &没关系!libsvm在手,天下我有!(原谅博主疯疯癫癫,快半夜了有点兴奋)
& &来看看svm_predict()这个函数给我们返回了什么信息:
& &一般不是这样写的嘛 p_labels,p_acc,p_vals=svm_predict(......)
& &p_labels就是模型对这些测试数据预测的label
& &p_acc就是分类准确率啦,均方差啦还有squared correlation coefficient(相关系数平方?)
& &p_vals:在libsvm python interface 中这样说,a list of&decision values&or probability estimates(if '-b 1'is specified)这不就是我们要找的决策值吗!!%&_&%
好啦好啦,到此为止这个问题就算解决啦!
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:10747次
排名:千里之外
转载:36篇
(2)(4)(6)(3)(2)(1)(2)(1)(1)(3)(10)(6)(4)关于CRC算法,高手赐教_百度知道您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
算法设计与分析课后习题解答.doc38页
本文档一共被下载:
次 ,您可免费全文在线阅读后下载本文档
文档加载中...广告还剩秒
需要金币:120 &&
算法设计与分析课后习题解答.doc
你可能关注的文档:
··········
··········
算法设计与分析基础课后练习答案
4.设计一个计算的算法,n是任意正整数。除了赋值和比较运算,该算法只能用到基本的四则运算操作。
算法求 //输入:一个正整数n2 //输出:。
step1:a 1; step2:若a*a n 转step 3,否则输出a; step3:a a+1转step 2;
5. a.用欧几里德算法求gcd(3)。
b. 用欧几里德算法求gcd(3),比检查min{m,n}和gcd(m,n)间连续整数的算法快多少倍?请估算一下。
gcd 105, 43
gcd 43, 19
b.有a可知计算gcd(3)欧几里德算法做了11次除法。
连续整数检测算法在14142每次迭代过程中或者做了一次除法,或者两次除法,因此这个算法做除法的次数鉴于1?14142 和 2?14142之间,所以欧几里德算法比此算法快1?14142/11 ≈ 1300 与 2?14142/11 ≈ 2600 倍之间。
6.证明等式gcd m,n
gcd n,m mod n 对每一对正整数m,n都成立.
根据除法的定义不难证明:
如果d整除u和v, 那么d一定能整除u±v;
如果d整除u,那么d也能够整除u的任何整数倍ku.
对于任意一对正整数m,n,若d能整除m和n,那么d一定能整除n和r m mod n m-qn;显然,若d能整除n和r,也一定能整除m r+qn和n。
数对 m,n 和 n,r 具有相同的公约数的有限非空集,其中也包括了最大公约数。故gcd m,n
7.对于第一个数小于第二个数的一对数字,欧几里得算法将会如何处理?该算法在处理这种输入的过程中,上述情况最多会发生几次?
对于任何形如0
m n的一对数字,Euclid算法在第一次叠代时交换m和n, 即
并且这种交换处理只发生一次.
8.a.对于所有1≤m,n≤10的输入, Euclid算法最少要做几次除法?
正在加载中,请稍后...君,已阅读到文档的结尾了呢~~
算法设计与分析期末试题汇总算法,设计,期末,算法与,期末试题,算法分析,设计期末,算法设计
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
算法设计与分析期末试题汇总
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口}

我要回帖

更多关于 优化算法 测试函数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信