史上最直白的logistic regression教程 之 四

原创 2015年11月19日 16:19:26

接上篇,用python实现logisitic regression,代码如下:

#!/usr/bin/env python 
#! -*- coding:utf-8 -*-

import matplotlib.pyplot as plt
from numpy import *

#创建数据集
def load_dataset():
    n = 100
    X = [[1, 0.005*xi] for xi in range(1, 100)]
    Y = [2*xi[1]  for xi in X]
    return X, Y

def sigmoid(z):
    t = exp(z)
    return t/(1+t)

#让sigmodi函数向量化,可以对矩阵求函数值,矩阵in,矩阵out
sigmoid_vec = vectorize(sigmoid)

#梯度下降法求解线性回归
def grad_descent(X, Y):
    X = mat(X)
    Y = mat(Y)
    row, col = shape(X)
    alpha = 0.05
    maxIter = 5000
    W = ones((1, col))
    V = zeros((row, row), float32)
    for k in range(maxIter):
        L = sigmoid_vec(W*X.transpose())
        for i in range(row):
            V[i, i] = L[0, i]*(L[0,i] - 1)
        W = W - alpha * (Y - L)*V*X
    return W

def main():
    X, Y = load_dataset()
    W = grad_descent(X, Y)
    print "W = ", W

    #绘图
    x = [xi[1] for xi in X]
    y = Y
    plt.plot(x, y, marker="*")
    xM = mat(X)
    y2 =  sigmoid_vec(W*xM.transpose())
    y22 = [y2[0,i] for i in range(y2.shape[1]) ]
    plt.plot(x, y22, marker="o")
    plt.show()

if __name__ == "__main__":
    main()

跟前面相对,多了一点变化,sigmoid_vec是对sigmoid函数的向量化,以及计算对对V的计算。

我们看看计算结果:
迭代5次,拟合结果

迭代50次,拟合结果

迭代500次,拟合结果

迭代5000次,拟合结果

由于sigmoid函数的原因,拟合函数不是直线,这就是跟线性拟合的差别。

Logistic regression教程到此结束,就酱!

史上最直白的logistic regression教程 之 三

在线性拟合的基础上,我们实现logistic regression了。如前所述,样本集是 {x1,y1},{x2,y2},...,{xn,yn}[1]\{x_1,y_1\}, \{x_2, y_2\...
  • u011539200
  • u011539200
  • 2015年11月19日 16:09
  • 1281

史上最直白的logistic regression教程 之 二

实现线性拟合我们用python2.7实现上一篇的推导结果。请先安装python matplotlib包和numpy包。具体代码如下:#!/usr/bin/env python #! -*- codi...
  • u011539200
  • u011539200
  • 2015年11月17日 15:02
  • 1347

史上最直白的logistic regression教程 之 一

Logistic Regession是什么Logistic Regression是线性回归,但最终是用作分类器。 为什么叫Logistic呢?因为它使用了Logisitic函数,形如: f(z)...
  • u011539200
  • u011539200
  • 2015年11月17日 15:11
  • 8083

不是回归的回归——Logistic Regression

关于Logistic Regression很多人都会有疑问:它用于分类问题,却为什么叫回归?Logistic Regression用到了一个常用的非线性函数——sigmoid函数,那它用于线性分类还是...
  • jteng
  • jteng
  • 2016年01月01日 15:49
  • 1519

机器学习算法之Logistic Regression算法实现

该代码基本上参考了zouxy09的专栏中的逻辑回归代码,他对于ML一些经典的算法都写得很不错,读后受益匪浅。 直接上代码: #-*- coding:utf8 -*- ''' 逻辑回归1.0 Au...
  • StephenFengz
  • StephenFengz
  • 2016年10月07日 23:10
  • 1076

台湾国立大学机器学习技法.听课笔记(第五讲) :Kernel Logistic Regression

台湾国立大学机器学习技法.听课笔记(第五讲)  :Kernel Logistic Regression 一,Soft-Margin SVM as Regularized Model 我们开始本lec...
  • huang1024rui
  • huang1024rui
  • 2015年09月17日 20:12
  • 895

【机器学习】Logistic Regression 的前世今生(理论篇)

Logistic Regression可以说是机器学习的入门算法。不过,你真的有把握能够把LR从头到脚讲一遍吗?你会现场建模,数学推导?你知道它的正则化的作用?你能讲清楚它跟MaxEnt最大熵模型的关...
  • cyh24
  • cyh24
  • 2015年12月19日 17:36
  • 13201

关于logistic regression的前世今生

转载自: http://blog.csdn.net/cyh_24/article/details/50359055 写这篇博客的动力是源于看到了下面这篇微博: 我在看到这篇...
  • u014430697
  • u014430697
  • 2016年03月26日 15:22
  • 552

Coursera机器学习-第三周-逻辑回归Logistic Regression

Classification and Representation 1. Classification Linear Regression (线性回归)考虑的是连续值([0,1]之间的数)的问题,...
  • dingchenxixi
  • dingchenxixi
  • 2016年05月10日 10:41
  • 1818

机器学习教程之3-逻辑回归(logistic regression)的sklearn实现

0.概述 --- **线性回归**不仅可以做**回归**问题的处理,也可以通过与**阈值**的比较转化为**分类**的处理,但是其**假设函数**的输出范围没有限制,这样很大的输出被分类为1,较少的数...
  • u010837794
  • u010837794
  • 2017年04月29日 23:30
  • 798
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:史上最直白的logistic regression教程 之 四
举报原因:
原因补充:

(最多只允许输入30个字)