defloadDataSet(): dataMat=[];labelMat=[] fr=open('testSet.txt') for line in fr.readlines(): lineArr=line.strip().split() dataMat.append([1.0,float(lineArr[0]),float(lineArr[1])]) labelMat.append(int(lineArr[2])) return dataMat,labelMat
defsigmoid(inx): return1.0/(1+exp(-inx))
defgradAscent(dataMatIn,classLabels): #转换为Numpy矩阵数据类型 dataMatrix = mat(dataMatIn) labelMat = mat(classLabels).transpose() m,n = shape(dataMatrix) alpha = 0.001 maxCycles = 500 #此处使用ones而不是one否则会出现"NameError: name 'one' is not defined"的错误 weights = ones((n,1)) for k in range(maxCycles): h = sigmoid(dataMatrix * weights) error = (labelMat-h) weights=weights + alpha*dataMatrix.transpose() * error return weights