本周跟着书本调试了一下实战第五章logistic回归,下面浅谈一下我在随机梯度上升中遇到的问题以及一些见解。
方式一:随机但有重复,增大遍历次数
def stocGradAscent1(dataMat,labels,numIter=150):
m,n = shape(dataMat)
weights = ones(n)
for j in range(numIter):
dataIndex = range(m)
for i in range(m):
alpha = 4/(1.0+i+j)+0.0001
randomIndex = int(random.uniform(0,len(dataIndex)))
h = sigmoid(sum(dataMat[randomIndex]*weights))
error = labels[randomIndex] - h
weights = weights + alpha * error * dataMat[randomIndex]
del(dataIndex[randomIndex])
return weights
m,labels = loadDataSet()
#wei = gradAscent(m,labels)
#wei = stocGradAscent0(array(m),labels)
wei = stocGradAscent1(array(m),labels)
plotBestFit(wei)