# 读取数据和分割数据
from math import exp
import numpy as np
def loadData():
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 sigmod(inX):
return 1.0 /(1 + exp(-inX))
#定义梯度上升():好像不是梯度上升
def gradAscent(dataMatIn,classLabels):
dataMatrix = np.mat(dataMatIn)
labelMat = np.mat(classLabels).transpose()
m,n= np.shape(dataMatrix)
alpha =0.01
maxCyles =500
weights =np.ones(n,1)
for k in range(maxCyles):
h = sigmod(dataMatrix * weights)
error = (labelMat -h)
weights = weights + alpha * dataMatrix.transpose() *error
return weights
#
其中推导上升推导可以参考:
https://blog.csdn.net/tianse12/article/details/70183348