逻辑回归

it2025-05-27  12

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))
最新回复(0)