我的设置:Python 2.7.4.1、numpymkl 1.7.1、windows7x64、WinPython
上下文:
我尝试实现序列最小优化算法来求解支持向量机。我使用最大违反对方法。在
问题是:
在工作集选择过程中,我想找出满足某个条件的元素的最大梯度值及其指数,即y[i]*alpha[i]<;0或y[i]*alpha[i]#y - array of -1 and 1
y=np.array([-1,1,1,1,-1,1])
#alpha- array of floats in range [0,C]
alpha=np.array([0.4,0.1,1.33,0,0.9,0])
#grad - array of floats
grad=np.array([-1,-1,-0.2,-0.4,0.4,0.2])
GMaxI=float('-inf')
GMax_idx=-1
n=alpha.shape[0] #usually n=100000
C=4
B=[0,0,C]
for i in xrange(0,n):
yi=y[i] #-1 or 1
alpha_i=alpha[i]
if (yi * alpha_i< B[yi+1]): # B[-1+1]=0 B[1+1]=C
if( -yi*grad[i]>=GMaxI):
GMaxI= -yi*grad[i]
GMax_idx = i
这个过程被多次调用(~50000),