import numpy as np
def loadDataSet():
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
def sigmoid(inX):
return 1.0/(1+np.exp(-inX))
def gradAscent(dataMatIn, classLabels):
dataMatrix = np.mat(dataMatIn) #convert to NumPy matrix
labelMat = np.mat(classLabels).transpose() #convert to NumPy matrix 转置(100, 1)
m,n = np.shape(dataMatrix)
print(m,n)
alpha = 0.001
maxCycles = 500
weights = np.ones((n,1)) #(3, 1)
for k in range(maxCycles): #heavy on matrix operations
h = sigmoid(dataMatrix*weights) #matrix mult 100,1
error = (labelMat - h) #vector subtraction
weights = weights + alpha * dataMatrix.transpose()* error #matrix mult(3,1)+(3,100)*(100,1)
return weights
dataMat,labelMat = loadDataSet()
print(gradAscent(dataMat, labelMat))
逻辑回归
最新推荐文章于 2024-05-29 16:42:20 发布