Logistic回归编程实战
来源:互联网 发布:wacom绘画软件 编辑:程序博客网 时间:2024/06/10 01:05
Logistic回归编程实战
上一节学习了Logistic回归,这一节就针对该算法进行编程实战,所使用的是python2.7。
以下是本项目的全部代码
# -*- coding:utf-8 -*-from numpy import *import matplotlib.pyplot as pltclass Logister(object): def __init__(self,path): self.path=path #将导入的文件转换为矩阵形式 def file2matrix(self,delimiter): recordlist = [] fp = open(self.path,"rb") # 读取文件内容 content = fp.read() fp.close() rowlist = content.splitlines() # 按行转换为一维表 # 逐行遍历 # 结果按分隔符分割为行向量 recordlist=[map(eval, row.split(delimiter)) for row in rowlist if row.strip()] return mat(recordlist) # 返回转换后的矩阵形式 # 绘制分类点 def drawScatterbyLabel(self,plt,Input): m,n=shape(Input) target = Input[:,-1] for i in xrange(m): if target[i]==0: plt.scatter(Input[i,0],Input[i,1],c='blue',marker='o') else: plt.scatter(Input[i,0],Input[i,1],c='red',marker='s') #Logistic函数 def logistic(self,wTx): return 1.0/(1.0+exp(-wTx)) def buildMat(self,dataSet): m,n=shape(dataSet) dataMat = zeros((m,n)) dataMat[:,0] = 1 dataMat[:,1:] = dataSet[:,:-1] return dataMat # 分类函数 def classifier(self,testData, weights): prob = self.logistic(sum(testData*weights)) # 求取概率--判别算法 if prob > 0.5: return 1.0 # prob>0.5 返回为1 else: return 0.0 # prob<=0.5 返回为0if __name__ == "__main__": logis = Logister("testSet.txt") input_data = logis.file2matrix("\t") target = input_data[:,-1] [m,n] = shape(input_data) #print input_data #print m,n logis.drawScatterbyLabel(plt,input_data) dataMat = logis.buildMat(input_data) #print dataMat #main() alpha = 0.001 #梯度下降的参数 steps = 500 #迭代次数 weights = ones((n,1)) #初始化权重向量 for k in xrange(steps): gradient = dataMat*mat(weights) output = logis.logistic(gradient) errors = target-output weights = weights + alpha*dataMat.T*errors #梯度下降 #print weights #应用模型到测试数据中 testdata = mat([-0.147324,2.874846]) #测试数据 m,n = shape(testdata) testmat = zeros((m,n+1)) testmat[:,0] = 1 testmat[:,1:] = testdata print logis.classifier(testmat,weights) #weights为前面训练得出的 #绘制决策边界 X = linspace(-5,5,100) Y = -(double(weights[0])+X*(double(weights[1])))/double(weights[2]) plt.plot(X,Y) plt.show()
运行结果:
1.0
代码中设计的数据集文件”testSet.txt”,可在http://download.csdn.net/detail/louishao/9747154下载查看。
0 0
- Logistic回归编程实战
- 机器学习实战-Logistic回归
- 《机器学习实战》--Logistic回归
- [机器学习实战] -Logistic回归
- 《机器学习实战》--Logistic回归
- 机器学习实战-Logistic回归
- 《机器学习实战》logistic回归
- 机器学习实战-Logistic回归
- 机器学习实战 Logistic回归
- 机器学习实战 Logistic 回归
- 机器学习实战-logistic回归原理
- 机器学习实战笔记5(logistic回归)
- 机器学习实战——Logistic回归
- 机器学习实战Logistic回归笔记
- 《机器学习实战》——logistic回归
- 机器学习实战python版Logistic回归
- SparkML实战之三:Logistic回归
- 机器学习实战5--Logistic回归
- ctags的使用
- poj3734Blocks(矩阵快速优化的dp)
- ORACLE清理归档日志
- win10环境下配置win10Apache+PHP+MySQL环境的方法
- jdk1.8.0_45源码解读——ArrayList的实现
- Logistic回归编程实战
- JS不跨域操控网易云音乐外链播放器
- MISC设备驱动分析及实现
- g++和gdb简单使用
- SQL中varchar和nvarchar有什么区别?
- HDU 2577
- 表单
- 我博客的第一天
- leetcode算法题(JavaScript实现)