疝气病预测病马死亡概率"/>
机器学习实战练习———logistic回归:疝气病预测病马死亡概率
参考:
import numpy as np
import random'''
sigmoid()函数定义
'''
def sigmoid(inX):return 1.0/(1 + np.exp(-inX))'''
梯度上升算法
'''
def gradAscent(dataSet,classLabels): #数据集和数据标签dataMatrix = np.mat(dataSet) #转换为nump matlabelMat = np.mat(classLabels).transpose()m,n=np.shape(dataMatrix)alpha = 0.01 #学习速率maxCycle = 500 #迭代次数weights = np.ones((n,1)) #初始化权重系数全为1print(weights)for k in range(maxCycle):h = sigmoid(dataMatrix*weights)error = labelMat - hweights = weights + alpha*dataMatrix.transpose()*errorreturn weights.getA()def colicTest():frTrain = open('G:\MLiA_SourceCode\machinelearninginaction\Ch05\horseColicTraining.txt')frTest = open('G:\MLiA_SourceCode\machinelearninginaction\Ch05\horseColicTest.txt')trainingSet = [];trainingLabels = []for line in frTrain.readlines():currLine = line.strip().split('\t')lineArr = []for i in range(len(currLine)-1):lineArr.append(float(currLine[i]))trainingSet.append(lineArr)trainingLabels.append(float(currLine[-1]))trainingWeights = gradAscent(np.array(trainingSet),trainingLabels)errorCount = 0; numTestVec = 0.0for line in frTest.readlines():numTestVec += 1.0currLine = line.strip().split('\t')lineArr = []for i in range(len(currLine)-1):lineArr.append(float(currLine[i]))if int(classifyVector(np.array(lineArr),trainingWeights[:,0]))!= int(currLine[-1]):errorCount += 1errorRate = (float(errorCount)/numTestVec)*100print("测试集错误率为:%.2f%%" % errorRate)def classifyVector(inX, weights):prob = sigmoid(sum(inX*weights))if prob > 0.5: return 1.0else: return 0.0if __name__ == '__main__':colicTest()
更多推荐
机器学习实战练习———logistic回归:疝气病预测病马死亡概率
发布评论