logit回归模型_logistic回归

本文介绍了逻辑回归作为一种二分类预测方法的基本原理及其应用实例。通过Sigmoid函数处理线性组合,将连续值转换为概率形式,进而预测事件发生的可能性。并以泰坦尼克号生存预测为例,展示了如何构建和评估逻辑回归模型。
摘要由CSDN通过智能技术生成

简单来说,逻辑回归就是来解决二分类(0或1)的问题的机器学习方法,用于评估事件发生或者不发生的可能性。比如你是否会购买这个西瓜,你是否患有某种疾病等等。

逻辑回归与线性回归是什么关系呢?

        逻辑回归(Logistic Regression)与线性回归(Linear Regression)都是一种广义线性模型(generalized linear model)。逻辑回归假设因变量 y 服从伯努利分布,而线性回归假设因变量 y 服从高斯分布。因此与线性回归有很多相同之处,去除Sigmoid映射函数的话,逻辑回归算法就是一个线性回归。可以说,逻辑回归是以线性回归为理论支持的,但是逻辑回归通过Sigmoid函数引入了非线性因素,因此可以轻松处理0/1分类问题。Sigmoid函数如下:

c1f230586fc0dff27dd82bfe092a75de.png

      Sigmoid 函数是一个 S 形曲线,它可以将任意实数值映射到介于 0 和 1 之间的值,但并不能取到 0或1。然后使用阈值分类器将 0 和 1 之间的值转换为 0 或 1。

import numpyimport mathimport matplotlib.pyplot as pltdef sigmoid(x):    a = []    for item in x:        a.append(1.0/(1.0 + math.exp(-item)))    return ax = numpy.arange(-10, 10, 0.1)y = sigmoid(x)plt.plot(x,y)plt.yticks([0.0, 0.5, 1.0])plt.axhline(y=0.5, ls='dotted', color='k')plt.show()

1a1b568c5af1b263f01571318e879c5d.png

泰坦尼克号生存案例

#建立模型import pandas as pdimport numpy as npimport statsmodels.api as smimport warningsimport matplotlib.pyplot as pltwarnings.filterwarnings("ignore")df = pd.read_csv('/Users/jingjingdehnaa/Desktop/mytrain.csv')#Survived:生否存活;Age:年龄;Sex:性别;Pclass:船舱级别data = df[['Survived','Age','Sex','Pclass']]data.replace({'male':1,'female':2},inplace = True)#性别更改为可比较值data.fillna({'Age':data['Age'].mean()},inplace = True)#年龄缺失值添加为平均年龄#虚拟变量,也叫哑变量,可用来表示分类变量、非数量因素可能产生的影响。#在计量经济学模型,需要经常考虑属性因素的影响。例如,职业、文化程度、季节等属性因素往往很难直接度量它们的大小。#通过构造0-1型的人工变量来量化属性因素。dummy_pclass = pd.get_dummies(data['Pclass'],prefix ='Pclass')#强调一点,生成m个虚拟变量后,只要引入m-1个虚拟变量到数据集中,未引入的一个是作为基准对比的。f_data = data[['Survived','Age','Sex']].join(dummy_pclass.iloc[:,1:])f_data['intercept'] = 1#手动添加截距#指定变量列train_cols = f_data.columns[1:]#执行logistic回归logit = sm.Logit(f_data['Survived'],f_data[train_cols])result = logit.fit()result.summary()Logit Regression ResultsDep. Variable:  Survived  No. Observations:  891Model:  Logit  Df Residuals:  886Method:  MLE  Df Model:  4Date:  Mon, 26 Oct 2020  Pseudo R-squ.:  0.3214Time:  20:20:14  Log-Likelihood:  -402.64converged:  True  LL-Null:  -593.33Covariance Type:  nonrobust  LLR p-value:  2.946e-81            coef  std err     z  P>|z|  [0.025  0.975]Age       -0.0333  0.007  -4.519  0.000  -0.048  -0.019Sex        2.6113  0.187  13.986  0.000  2.245  2.977Pclass_2  -1.1222  0.258  -4.354  0.000  -1.627  -0.617Pclass_3  -2.3292  0.241  -9.669  0.000  -2.801  -1.857intercept  -1.6779  0.389  -4.317  0.000  -2.440  -0.916
#通过模型预测数据import copycombos = copy.deepcopy(f_data)# 指定变量列predict_cols = f_data.columns[1:]# 手动添加intercept变量combos['intercept'] = 1.0# 将预测结果加入comboscombos['predict'] = result.predict(combos[predict_cols])# 假定 >0.5表示命中total = 0hit = 0for value in combos.values:  # 预测存活 数据中的最后一列  predict = value[-1]  # 实际存活结果 数据中的第一列  Survived = int(value[0])   # 假定预测概率大于0.5则表示预测存活  if predict > 0.5:    total += 1    # 预测命中    if Survived == 1:      hit += 1 # 输出结果print(‘预测存活:’,total)print('预测命中:',hit)print('预测命中率:',hit/total)预测存活:323预测命中:244预测命中率:0.755
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值