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

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

import matplotlib.pyplot as plt
from numpy import *

#创建数据集
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)

#梯度下降法求解线性回归
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():
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()

Logistic regression教程到此结束，就酱！

• 本文已收录于以下专栏：

举报原因： 您举报文章：史上最直白的logistic regression教程 之 四 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)