文档章节

2017年2月14日 Logistic Regression

airxiechao
 airxiechao
发布于 2017/03/20 08:25
字数 316
阅读 27
收藏 0

Logistic Regression assumes that the probability of the dependent varaiable y equaling a positive case can be interpreted as logistic function

We can now defind the cost function as

To minimize cost function, gradient descent method can be used
The process begins with computing the derivative of cost function

Then improved by repeating

import numpy as np
import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from pylab import scatter, show, legend, xlabel, ylabel

df = pd.read_csv("data/data.csv", header=0)
X = df[["grade1","grade2"]].as_matrix()
y = df["label"].as_matrix()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5)

# train scikit learn model 
clf = LogisticRegression()
clf.fit(X_train,y_train)
print 'scikit score:', clf.score(X_test, y_test)
#scikit score: 0.9

# visualize data
def visualize(X, y):
    pos = np.where(y == 1)
    neg = np.where(y == 0)
    scatter(X[pos, 0], X[pos, 1], marker='o', c='b')
    scatter(X[neg, 0], X[neg, 1], marker='x', c='r')
    xlabel('Exam 1 score')
    ylabel('Exam 2 score')
    legend(['Not Admitted', 'Admitted'])
    show()

visualize(X, y)

class myLogisticRegression:
    
    def sigmoid(self, x):
        return 1.0/(1.0+np.exp(-x))
    
    def logistic(self, X, theta):
        return self.sigmoid(np.dot(X, theta))
    
    def cost(self, X, y, theta):
        m = X.shape[0]
        return -1.0 / m * (np.dot(y, np.log(self.logistic(X, theta))) + np.dot((1-y), (1-self.logistic(X, theta))))
    
    def derivative_of_cost(self, X, y, theta):
        m = X.shape[0]
        return 1.0 / m * np.dot(self.logistic(X, theta)-y, X)
    
    def gradient_descent(self, X, y, theta, alpha):
        return theta - alpha * self.derivative_of_cost(X, y, theta)
    
    def fit(self, X, y, alpha, num_iter):
        self.theta = np.zeros(X.shape[1])
        for i in range(num_iter):
            self.theta = self.gradient_descent(X, y, self.theta, alpha)
    
    def predict(self, X):
        return self.logistic(X, self.theta)
    
    def score(self, X, y):
        return 1.0 - 1.0 * np.count_nonzero(np.round(self.predict(X)) - y) / len(y)
        

lr = myLogisticRegression()
lr.fit(X_train, y_train, .1, 1000)
print 'score:', lr.score(X_test, y_test)
#score: 0.86

 

© 著作权归作者所有

airxiechao
粉丝 4
博文 42
码字总数 9717
作品 1
成都
程序员
私信 提问
logistic regression识别真假币

介绍 本篇实现了使用 回归进行真假币的判断,有关 的详细讲解见这里。本篇使用随机梯度下降算法 个样本, 每一个样本有 个特征。 为 表示是真钞,为 则为假钞。 本篇使用 个样本作为测试集,...

robin_Xu_shuai
2017/10/31
0
0
TensorFlow入门——Softmax Regression

Softmax Regression是Logistic回归在多分类上的推广,对于Logistic回归以及Softmax Regression的详细介绍可以参见: 简单易学的机器学习算法——Logistic回归 利用Theano理解深度学习——Log...

google19890102
2018/04/18
0
0
数九时间表(2017-2018)

2017年进九时间 2017进九的日子是12月22日,其实也就是“冬至日”。天文专家介绍说,“九九”是我国北方特别是黄河中下游地区更为适用的一种杂节气。 2017~2018年数九时间表 一九 2017年12月...

anlve
2018/01/27
0
0
Machine Learning-week 3

Question 1 Suppose that you have trained a logistic regression classifier, and it outputs on a new examplex a prediction hθ(x) = 0.7. This means (check all that apply): Our est......

盟丫头萌檬懵
2017/04/10
0
0
逻辑回归你说说能否用来做非线性分类?

面试中问到的高频应该是Logistic Regression和SVM这两个比较多而且十分经典,从说明原理到具体的数学表达式,从手推公式到具体的应用场景,Logistic Regression和SVM都给人留下了深刻的印象。...

李理
2017/11/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
10
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
12
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
5
0
Django的ChoiceField和MultipleChoiceField错误提示,选择一个有效的选项

在表单验证时提示错误:选择一个有效的选项 例如有这样一个表单: class ProductForm(Form): category = fields.MultipleChoiceField( widget=widgets.SelectMultiple(), ...

编程老陆
昨天
10
0
Vue核心概念及特性 (一)

Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。 > 特点: 易用,灵活,高效,渐进式框架。 > 可以随意组合需要用到的模块 vue + components + vue-router + vuex + v...

前端优选
昨天
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部