MCPcopy Create free account
hub / github.com/Jack-Cherish/Machine-Learning / selectJ

Function selectJ

SVM/svm-digits.py:106–131  ·  view source on GitHub ↗

内循环启发方式2 Parameters: i - 标号为i的数据的索引值 oS - 数据结构 Ei - 标号为i的数据误差 Returns: j, maxK - 标号为j或maxK的数据的索引值 Ej - 标号为j的数据误差

(i, oS, Ei)

Source from the content-addressed store, hash-verified

104 return j
105
106def selectJ(i, oS, Ei):
107 """
108 内循环启发方式2
109 Parameters:
110 i - 标号为i的数据的索引值
111 oS - 数据结构
112 Ei - 标号为i的数据误差
113 Returns:
114 j, maxK - 标号为j或maxK的数据的索引值
115 Ej - 标号为j的数据误差
116 """
117 maxK = -1; maxDeltaE = 0; Ej = 0 #初始化
118 oS.eCache[i] = [1,Ei] #根据Ei更新误差缓存
119 validEcacheList = np.nonzero(oS.eCache[:,0].A)[0] #返回误差不为0的数据的索引值
120 if (len(validEcacheList)) > 1: #有不为0的误差
121 for k in validEcacheList: #遍历,找到最大的Ek
122 if k == i: continue #不计算i,浪费时间
123 Ek = calcEk(oS, k) #计算Ek
124 deltaE = abs(Ei - Ek) #计算|Ei-Ek|
125 if (deltaE > maxDeltaE): #找到maxDeltaE
126 maxK = k; maxDeltaE = deltaE; Ej = Ek
127 return maxK, Ej #返回maxK,Ej
128 else: #没有不为0的误差
129 j = selectJrand(i, oS.m) #随机选择alpha_j的索引值
130 Ej = calcEk(oS, j) #计算Ej
131 return j, Ej #j,Ej
132
133def updateEk(oS, k):
134 """

Callers 1

innerLFunction · 0.70

Calls 2

calcEkFunction · 0.70
selectJrandFunction · 0.70

Tested by

no test coverage detected