机器学习---Logistic回归数学推导以及python实现
2017-08-24 15:14
549 查看
逻辑回归数学推导
对于一些数据(离散点),我们找到一条直线拟合这些离散点,就叫回归。Logistic回归主要用于二分类问题。
假设 X(x0,x1,x2...xn) 是我们的测试数据,θ(θ0,θ1,θ2....θn)是我们权重,由线性回归模型产生的预测值是 Z = x0*θ0+x1*θ1...+xn*θn。二分类问题输出标记非 0 即 1。我们需要把 Z 转化为 0/1 值。
我们利用 sigmoid函数可以完成上面的转化过程。
(1)
sigmoid函数图形以及转化过程,在 Z 大于0 时候,转化为 1 ,否则就转化为 0.
公式(1)可以理解为 给定输入 X ,Y = 1 的概率。 因此 hθ(x) 可以理解为 结果取 1 的概率。因此,类别 1 和类别 0 的概率是:
和线性方程类似,我们需要找到 θ,使得 Cost函数 最小。Logistic 回归的 Cost 函数:
(两个函数一致)
找到合适的 θ ,使的 J 最小。使用梯度下降法
(alpha是学习率)
通过迭代对 θ 进行更新,达到我们期望的精度或者达到了迭代次数
逻辑回归Python实现
使用 python3# -*- coding: utf-8 -*- """ Created on Thu Aug 24 09:45:47 2017 @author: yqq """ import pandas as pd import numpy as np import matplotlib.pyplot as plt def getData(): //获得数据 gre = pd.read_csv("C:/Users/yqq/Desktop/testSet.csv",sep=',') Data = gre[[0,1]] Label = gre[[2]] m,n=np.shape(Data) coulumn = np.ones((m,1)) Data=np.column_stack((coulumn,Data)) dataMat=np.mat(Data) LabelMat=np.mat(Label) return dataMat,LabelMat def sigmoid(inx): return 1.0/(1+np.exp(-inx)) def gradAscent(dataIn,LabelIn,alpha,maxCycles): dataMat = np.mat(dataIn) LabelMat=np.mat(LabelIn).transpose() m,n=np.shape(dataMat) weight=np.ones((n,1)) #print(dataMat*weight) for k in range(maxCycles): h=sigmoid(dataMat*weight) error=LabelMat-h weight=weight+alpha*dataMat.transpose()*error return weight def display(dataMat,LabelMat,w,): xcord1=[];xcord2=[] ycord1=[];ycord2=[] m,n=np.shape(dataMat) w=w.getA() for i in range(m): if int(LabelMat[i])==1: xcord1.append(dataMat[i][1]) ycord1.append(dataMat[i][2]) else: xcord2.append(dataMat[i][1]) ycord2.append(dataMat[i][2]) x=np.linspace(-3.0,3.0,100) y=(-w[0]-w[1]*x)/w[2] fig=plt.figure() ax=fig.add_subplot(1,1,1) ax.scatter(xcord1,ycord1,s=30,c='red',marker='s') ax.scatter(xcord2,ycord2,s=10,c='green',marker='s') ax.plot(x,y) plt.xlabel("x");plt.ylabel("y") plt.show()
相关文章推荐
- 机器学习--- 一元线性回归数学推导以及Python实现
- Alternating Least Squares(ASL) for Implicit Feedback Datasets的数学推导以及用Python实现
- [机器学习]逻辑回归公式推导及其梯度下降法的Python实现
- Alternating Least Squares(ASL) for Implicit Feedback Datasets的数学推导以及用Python实现
- 机器学习之Logistic回归与Python实现
- 逻辑回归的数学推导及java代码实现
- 计算Fibonacci数列第n项的第8种方法(数学推导与Python实现)
- 机器学习之logistic回归算法的java实现
- Logistic回归 python实现
- 机器学习(1):Logistic回归原理及其实现
- Python机器学习(二):Logistic回归建模分类实例——信用卡欺诈监测(上)
- Stanford机器学习网络课程---第三讲(续)Matlab实现线性回归和逻辑回归: Linear Regression & Logistic Regression
- Logistic回归、softmax回归以及tensorflow实现MNIST识别
- 机器学习:逻辑回归与Python代码实现
- 机器学习基本知识以及几种分类算法的Python实现(适合入门)
- 机器学习:对于反向传播算法(backpropagation)的理解以及python代码实现
- logistic回归与牛顿方法的python实现 (standford公开课程小作业)
- 从零开始机器学习001-线性回归数学推导
- [置顶] 【算法 机器学习】MATLAB、R、python三种编程语言实现简单线性回归算法比较
- Python机器学习(三):Logistic回归建模分类实例——信用卡欺诈监测(下)