资源技术动态如何在 python 中建立自己的逻辑回归模型

如何在 python 中建立自己的逻辑回归模型

2019-12-19 | |  123 |   0

原标题:如何在 python 中建立自己的逻辑回归模型

来源:AI 研习社     链接:https://www.yanxishe.com/TextTranslation/2290


Logistic回归机器学习算法用于分类任务而不是回归问题,从这个意义上说,该算法的名称可能有点令人困惑。这里的名称“回归”表示线性模型适合特征空间。该算法将逻辑函数应用于特征的线性组合,基于预测变量来预测分类因变量的结果。逻辑回归算法可根据给定的预测变量来估计落入分类因变量的特定级别的概率。


假设我们要预测多伦多明天是否会下雨。此处的预测结果不是连续的数字,因为可能会下雨,也可能不会下雨,因此无法应用线性回归。在这里,结果变量是几种类别之一,逻辑回归可以派上用场了。


Logistic回归的应用


1.Logistic回归算法用于流行病学领域,以识别疾病的危险因素并相应地制定预防措施。

2.用于预测候选人是否会赢得或失去政治选举,或预测选民是否会为特定候选人投票。

3.用于天气预报以预测下雨的可能性。

4.在信用评分系统中用于风险管理,以预测帐户的违约情况。  


使用的环境和工具


1.numpy

2.matplotlib


代码


事不宜迟,让我们开始使用代码。 github上的完整项目可以在这里找到。

让我们从加载库和依赖关系开始。


import numpy as np

import matplotlib.pyplot as plt


第一个函数是用来定义sigmoid激活函数,该函数的形状如下:

01.png

sigmoid函数:

def sigmoid(scores): 

   return 1 / (1 + np.exp(-scores))

sigmoid函数的数学形式如下:

02.png


sigmoid函数也称为对数函数,它形状是 一条'S'形曲线,该曲线可以采用任何实数值,并将其映射为一个介于0和1之间的值。如果输入值正无穷大,则y预测将变为1,如输入值为负无穷大,y预测将变为0。如果sogmoid函数的输出大于0.5,则可以将结果分类为1或True,如果结果小于0.5,则可以将其分类为0或False。


下一个函数用于返回对数似然值。 与此功能相关的参数是特征向量,目标值和模型的权重。


对数似然性是一个术语,暗示可能性的自然对数。 反过来,给定一个样本和可能已经从样本生成的参数分布族(即由参数索引的一组分布),似然度是一个函数,它将每个参数与观察给定样本的概率相关联。


def log_likelihood(features, target, weights): 

   scores = np.dot(features, weights)  

   ll = np.sum(target * scores - np.log(1 + np.exp(scores)))  

   return ll


下一个函数用于建立逻辑回归模型。 与此函数关联的参数是特征向量、目标值、训练步骤数、学习率和添加截距的参数,默认情况下设置为false。


首先,使用特征向量分配权重。 使用特征向量和权重向量的点积计算下一个分数。 通过应用sigmoid函数得到的得分来找到预测。 现在可以计算出误差,该误差是目标值和预测值之间的差。 该误差用于找出梯度,该梯度是转置特征向量和误差的点积。 新的权重可以通过将学习率乘以梯度再乘以旧的权重来计算。 


def logistic_regression(features, target, num_steps, learning_rate, add_intercept=False):    if add_intercept: 

       intercept = np.ones((features.shape[0], 1))  

       features = np.hstack((intercept, features))     weights = np.zeros(features.shape[1])

  

    for step in range(num_steps):  

      scores = np.dot(features, weights) 

      predictions = sigmoid(scores)  

      output_error_signal = target - predictions      

      gradient = np.dot(features.T, output_error_signal)    

      weights += learning_rate * gradient  

 

      if step % 10000 == 0:           

        print(log_likelihood(features, target, weights)) 

    return weights


random()函数用于在Python中生成随机数。 种子函数用于保存随机函数的状态,以便它可以在同一台计算机或不同计算机上多次执行代码时生成一些随机数。 选择的种子值为10,具有10000个数据点。


多元正态是一维正态分布到更高维的概括。 这种分布由其均值和协方差矩阵指定。


np.random.seed(10)

num_observations = 10000 x1 = np.random.multivariate_normal([0, 0], [[1, 0.5], [0.5, 1]], num_observations)

x2 = np.random.multivariate_normal([1, 4], [[1, 0.5], [0.5, 1]], num_observations)


hstack用于扩展水平方向的数据,而vstack用于扩展垂直方向的数据。 首先使用vstack使用特征分离数据点,然后使用hstack使用标签分离数据点。


simulated_separableish_features = np.vstack((x1, x2)).astype(np.float32)simulated_labels = np.hstack((np.zeros(num_observations), np.ones(num_observations)))


让我们通过使用散点函数(其中alpha混合值选择为0.3)绘制分离的数据点来可视化结果。 混合值的范围可以设置为0(透明)到1(不透明)之间。


plt.figure(figsize=(10, 8))plt.scatter(simulated_separableish_features[:, 0],   simulated_separableish_features[:, 1], c=simulated_labels,    alpha=0.3,)

 

plt.show()


结果

1576725726843254.png

分类的样本点



结论

最后,我演示了如何在python中从头开始建立逻辑回归模型。 Logistic回归是一种广泛使用的监督机器学习技术。 它是统计学家,研究人员和数据科学家进行预测分析的最佳工具之一。 它具有几个优点,例如它是一种鲁棒性强的算法,因为自变量不必具有相同的方差或正态分布,不假设自变量和自变量之间具有线性关系,因此还可以处理非线性影响,并且它们也更容易实现,检查并且不那么复杂。


参考书目/其他读物

Logistic回归-详细概述
Logistic回归在20世纪初被用于生物科学中。 然后,它被用于许多社交网站...

完善逻辑回归模型的技巧| Zopa博客

当我们在Zopa创建信用风险评估或欺诈预防机器学习模型时,我们会使用各种…

逻辑回归:概念与应用| 博客| 无量纲通过本文,我们试图了解逻辑回归的概念及其应用。 我们将……

【作者:来自VIT Vellore 的 Abhinav Sagar】

-----------------------------------------------------------------------------------------------------

发起:唐里 校对:唐里 审核:鸢尾

参与翻译(1人): 天字一号

英文原文:How to Build Your Own Logistic Regression Model in Python

THE END

免责声明:本文来自互联网新闻客户端自媒体,不代表本网的观点和立场。

合作及投稿邮箱:E-mail:editor@tusaishared.com

上一篇:AI 复活的那些“失落艺术”

下一篇:短文本主题建模

用户评价
全部评价

热门资源

  • 应用笔画宽度变换...

    应用背景:是盲人辅助系统,城市环境中的机器导航...

  • GAN之根据文本描述...

    一些比较好玩的任务也就应运而生,比如图像修复、...

  • 端到端语音识别时...

    从上世纪 50 年代诞生到 2012 年引入 DNN 后识别效...

  • 人体姿态估计的过...

    人体姿态估计是计算机视觉中一个很基础的问题。从...

  • 谷歌发布TyDi QA语...

    为了鼓励对多语言问答技术的研究,谷歌发布了 TyDi...