Python分类分析(逻辑回归logistic回归分析)
目录
一、逻辑回归概念
二、逻辑回归概述
三、逻辑回归适用场景
四、逻辑回归所处理的数据
实战案例——市民属性与早餐饮品的关系分析
1、数据分析任务
2、基于Python编程语言实现
前言
总结
3.基于阿里云机器学习 PAI 平台实现
逻辑回归也称作logistic回归分析,是一种广义的线性回归分析模型,属于机器学习中的监督学习。其推导过程与计算方式类似于回归的过程,但实际上主要是用来解决二分类问题(也可以解决多分类问题)。通过给定的n组数据(训练集)来训练模型,并在训练结束后对给定的一组或多组数据(测试集)进行分类。其中每一组数据都是由p 个指标构成。
一、逻辑回归概念
逻辑回归又称逻辑回归分析,是一种广义的线性回归分析模型,自变量可以包括很多因素,因变量常为二分类结果,如图所示。常用于数据挖掘、疾病自动诊断、经济预测等领域,例如,探讨引发疾病的危险因素,并根据危险因素预测疾病发生的概率等。
二、逻辑回归概述
逻辑回归与多重线性回归实际上有很多相同之处,最大的区别就在于它们的因变量不同,其他的都差不多,如图6-17所示。因此,这两类回归可以归于广义线性模型。如果是连续的,就是多重线性回归;如果是二项分布,就是逻辑回归;如果是泊松分布,就是泊松回归;如果是负二项分布,就是负二项回归。
三、逻辑回归适用场景
四、逻辑回归所处理的数据
逻辑回归是用来进行分类的。例如,我们给出一个人的 [身高,体重] 这两个指标,然后判断这个人是属于”胖“还是”瘦“这一类。对于这个问题,我们可以先测量n个人的身高、体重以及对应的指标”胖“,"瘦”,把胖和瘦分别用0和1来表示,把这n组数据输入模型进行训练。训练之后再把待分类的一个人的身高、体重输入模型中,看这个人是属于“胖”还是“瘦”。
如果数据是有两个指标,可以用平面的点来表示数据,其中一个指标为x轴,另一个为y轴;如果数据有三个指标,可以用空间中的点表示数据;如果是p维的话(p>3),就是p维空间中的点。
从本质上来说,逻辑回归训练后的模型是平面的一条直线(p=2),或是平面(p=3),超平面(p>3)。并且这条线或平面把空间中的散点分成两半,属于同一类的数据大多数分布在曲线或平面的同一侧。
如上图所示,其中点的个数是样本个数,两种颜色代表两种指标。这个直线可以看成经这些样本训练后得出的划分样本的直线。那么对于之后的样本的p1与p2的值,就可以根据这条直线来判断它属于哪一类了。
实战案例——市民属性与早餐饮品的关系分析
逻辑回归在分类的时候,计算量仅仅只和特征的数目相关,简单易理解,模型的可解释性非常好,从特征的权重可以看到不同的特征对最后结果的影响。本节通过一个具体的实例,使读者能够加深对逻辑回归模型的理解,掌握如何使用Python编程语言及阿里云机器学习PAI平台,进行基于逻辑回归算法的数据分析。
1、数据分析任务
本节实例提供某卫生组织收集的人群类型属性及早餐饮品数据,需要分析不同类型的人群与早餐饮品间的关系,要求通过逻辑回归算法,建立人群与早餐饮品间的逻辑关系,以达成通过人群属性预测早餐饮品的目标。其中数据文件为ods_breakfast_info.csv。
2、基于Python编程语言实现
前言
确保本机已安装Anaconda3-5.1.0及以上版本,准备本地数据文件ods_breakfast_info.csv,运行Jupyter Notebook 程序,在Web 浏览器中新建Python3文件。
(1)导人所需的Python 模块。
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report
(2)加载CSV数据文件,并对数据进行必要的观察和探索。
数据集信息:查看数据集属性的数据类型、数据量、是否有空值等。
data.info()
(3)区分输入及输出数据,其中输入数据为人群属性,输出数据为早餐饮品。
x = data[['age','gender','occupation','marital_status']].values
y = data['breakfast'].values
data['breakfast'].value_counts()
(4)设置随机数种子,确保结果可重现,并按比例随机拆分训练样本和测试样本。
np.random.seed = 12
(train_x,test_x,train_y,test_y)=train_test_split(x,y,train_size=0.8,test_size=0.2)
(5)使用多分类函数mulinomial构建逻辑回归模型,并通过样本集对模型进行训练。
model = LogisticRegression(multi_class='multinomial',solver='newton-cg')
model.fit(train_x,train_y)
(6) 使用精准率 Precision、召回率Recall、F1-score 等指标对模型进行评价。
model.score(test_x,test_y)
print(classification_report(test_y,model.predict(test_x)))
(7)利用模型预测新的数据。
总结
通过比较测试集中的属性“breakfast”和预测得到的结果,可以得出预测正确的概率为0.7748,说明使用逻辑回归建立的模型预测效果较好,在分类问题上可以选择使用逻辑回归算法进行建模和预测。
3.基于阿里云机器学习 PAI 平台实现
①开发前环境准备工作:确保已注册阿里云账号,并开通阿里云 DataWorks及PAI平台服务。
②数据准备:进入阿里云PAI平台,在“Studio-可视化建模”菜单项中创建项目(注:也可以使用旧项目),并切换到DataWorks平台,打开与阿里云PAI平台同名的工作空间。通过如下SQL语句建表,并导入CSV文件数据,如下所示。
-- 新建人群属性与早餐饮品数据表
DROP TABLE IF EXISTS ODS_BREAKFAST_INFO;
CREATE TABLE ODS_BREAKFAST_INFO(
age BIGINT COMMENT'年龄',
gender BIGINT COMMENT'性别',
occupation BIGINT COMMENT'职业',
marital_status BIGINT COMMENT'婚姻状态',
breakfast STRING COMMENT'早餐种类'
)COMMENT'早餐调查表;
③创建实验:进入阿里云PAI平台对应项目,新建空白实验,如图6-25所示。
④设计实验流程:本实验中需要用到4个组件,分别是读数据表、拆分、逻辑回归、预测。其中“源/目标”组中的“读数据表”组件中,设置表名为ODS_BREAKFAST_ INFO;在组件“拆分”中设置拆分比例为0.8;在组件“逻辑回归”中,设置特征列为 age、gender、occupation、marital_status,标签列为breakfast;在组件“预测”中,左侧输入为逻辑回归模型,右侧输入为表ODS_BREAKFAST_INFO中数据,如图6-26所示。
⑤运行实验:单击“运行”按钮,等待一段时间,待运行结束后,右击组件“预测”,查看数据。在数据列表中,字段prediction_result 即为基于逻辑回归模型根据age、 gender、occupation、marital_status预测的早餐饮品,可与真实值breakfast进行比对,如图 6-27所示。
可以通过查看预测结果,和测试集中的属性“breakfast”进行比较,图中罗列的测试集属性数据和预测结果有6条,其中有3条预测结果相同,说明使用逻辑回归建立的模型预测效果较好,在分类问题上可以选择使用逻辑回归算法进行建模和预测。
作者:肖洁婷