逻辑回归 最大熵模型 iis 牛顿法 拟牛顿法

逻辑回归 最大熵模型 iis 牛顿法 拟牛顿法推导
逻辑回归(梯度下降法)代码实现
逻辑回归 最大熵模型 iis 牛顿法 拟牛顿法_第1张图片
逻辑回归 最大熵模型 iis 牛顿法 拟牛顿法_第2张图片
逻辑回归 最大熵模型 iis 牛顿法 拟牛顿法_第3张图片

逻辑回归 最大熵模型 iis 牛顿法 拟牛顿法_第4张图片
逻辑回归 最大熵模型 iis 牛顿法 拟牛顿法_第5张图片
逻辑回归 最大熵模型 iis 牛顿法 拟牛顿法_第6张图片
逻辑回归 最大熵模型 iis 牛顿法 拟牛顿法_第7张图片
逻辑回归 最大熵模型 iis 牛顿法 拟牛顿法_第8张图片
逻辑回归 最大熵模型 iis 牛顿法 拟牛顿法_第9张图片

import numpy as np
import pandas as pd

def sigmoid(inX):
    return 1.0/(1+np.exp(-inX))

def regularize(xMat):
    inMat=xMat.copy()
    inMeans=np.mean(inMat,axis=0)
    inVar=np.std(inMat,axis=0)
    inMat=(inMat-inMeans)/inVar
    return inMat

def logisticReg_0(dataSet,eps=0.01,numIt=5000):
    xMat=np.mat(dataSet.iloc[:,:-1].values)
    yMat=np.mat(dataSet.iloc[:,-1].values).T
    xMat=regularize(xMat)
    m,n=xMat.shape
    weights=np.zeros((n,1))
    for k in range(numIt):
        grad=xMat.T * (sigmoid(xMat*weights) - yMat)/m
        weights=weights-eps*grad
    return weights

def logisticAcc(dataSet,method,eps=0.01,numIt=500):
    weights=method(dataSet,eps=eps,numIt=numIt)
    p=sigmoid(xMat*weights).A.flatten()
    for i,j in enumerate(p):
        if j<0.5:
            p[i]=0
        else:
            p[i]=1
            
    train_error=(np.fabs(yMat.A.flatten()-p)).sum()
    trainAcc=train_error/yMat.shape[0]
    return trainAcc

你可能感兴趣的:(逻辑回归)