
大数据分析与应用.逻辑回归
1.逻辑回归概念逻辑回归又称逻辑回归分析,是一种广义的线性回归分析模型,自变量可以包括很多因素,因变量常为二分类结果,如图1-1 所示。常用于数据挖掘、疾病自动诊断、经济预测等领域,例如,探讨引发疾病的危险因素,并根据危险因素预测疾病发生的概率等。1-1 逻辑回归模型逻辑回归与多重线性回归实际上有很多相同之处,最大的区别就在于它们的因变量不同,其他的都差不多,如图1-2 所示。因此,这两类回归
1.逻辑回归概念
逻辑回归又称逻辑回归分析,是一种广义的线性回归分析模型,自变量可以包括很多因素,因变量常为二分类结果,如图 1-1 所示。常用于数据挖掘、疾病自动诊断、经济预测等领域,例如,探讨引发疾病的危险因素,并根据危险因素预测疾病发生的概率等。

逻辑回归与多重线性回归实际上有很多相同之处,最大的区别就在于它们的因变量不同,其他的都差不多,如图 1-2 所示。因此,这两类回归可以归于广义线性模型。如果是连续的,就是多重线性回归;如果是二项分布,就是逻辑回归;如果是泊松分布,就是泊松回归;如果是负二项分布,就是负二项回归。

2.逻辑回归原理
逻辑回归虽然名字里带“回归”,但是实际上它是一种分类方法,主要用于二分类问题,所以需要使用 logistic 函数(或称为 sigmoid 函数),函数形式为:
g(z)=1/1+e^-z
逻辑回归首先把样本映射到[0,1]之间的数值,这就归功于 sigmoid 函数,可以把任何连续的值映射到[0,1]之间,数越大越趋向于 0,越小越趋近于 1。在逻辑回归中还有一个非常重要的步骤是选定阈值,意思是确定一个值作为阈值,如选定阈值为 0.5,那么小于 0.5的预测为负例,哪怕结果是0.49,也将这个样本预测为负例,反之则为正例。但由于只是根据阈值进行预测,误差都是存在的,所以选定阈值时需要选择可以接受误差的程度。
3.案例分析
逻辑回归在分类的时候,计算量仅仅只和特征的数目相关,简单易理解,模型的可解释性非常好,从特征的权重可以看到不同的特征对最后结果的影响。本节通过一个具体的实例,使读者能够加深对逻辑回归模型的理解,掌握如何使用 Python 编程语言及阿里云机器学习 PAI 平台,进行基于逻辑回归算法的数据分析。
1.数据分析
实例提供某卫生组织收集的人群类型属性及早餐饮品数据,需要分析不同类型的人群与早餐饮品间的关系,要求通过逻辑回归算法,建立人群与早餐饮品间的逻辑关系, 以达成通过人群属性预测早餐饮品的目标。其中数据文件为 ods_breakfast_info.csv,字段说明见表1-3。
字段名 | 类型 | 含义 |
---|---|---|
age | 数值 | 年龄 |
gender | 数值 | 性别 |
occupation | 数值 | 职业 |
marital_status | 数值 | 婚姻状态 |
breakfast | 字符串 | 早餐种类 |
2.基于Python编程语言实现
① 开发前准备工作:确保本机已安装 Anaconda3-5.1.0 及以上版本,准备本地数据文件 ods_breakfast_info. csv,运行 Jupyt Notebook 程序,在 Web 浏览器中新建 Python3 文件。
② 导入所需的 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
③ 加载 CSV 数据文件,并对数据进行必要的观察和探索,如图 1-4和图 1-5 和图1-6所示。
#读取数据
data=pd.read_csv("ods_breakfast_info.csv",encoding="gb2312")
#查看数据:查看数据的前几条记录
data.head()
#数据集统计性描述:观察数据的数量、中值、标准值、最大值、最小值等
data.describe()
#数据集信息:查看数据集属性的数据类型、数据量、是否有空值等
data.info()



④ 区分输入及输出数据,其中输入数据为人群属性,输出数据为早餐饮品,如图 1-7 所示。
#查看各类别计数
data["breakfast"]. value_counts()
#区分特征及标签数据
x=data[["age", "gender", "occupation", "marital_status"]].values
y=data["breakfast"]. values

⑤ 设置随机数种子,确保结果可重现,并按比例随机拆分训练样本和测试样本。
#设置随机数种子
np. random. seed=123
#拆分样本
(train_x, test_x, train_y, test_y) = train_test_split(x, y, train_size=0.8, test_size=0.2)
⑥ 使用多分类函数 multinomial 构建逻辑回归模型,并通过样本集对模型进行训练, 如图 1-8 所示。
#构建模型,solvers=newton-cg/sag/lbfgs
model = LogisticRegression(multi_class="multinomial" , solver="newton-cg")
#通过训练样本训练模型
model. fit(train_x, train_y)
⑦ 使用精准率 Precision、召回率 Recall、F1-score 等指标对模型进行评价,如图 1-9 所示。
#通过测试样本评估模型
print("模型评分:",model.score(test_x, test_y))
#测试样本分类报告
print(classification_report(test_y,model.predict(test_x)))

⑧ 利用模型预测新的数据,如图 1-10 所示。
#预测新数据
print( model. predict([[4,0,1,1]])
print("概率:",model.predict_proba([[4,0,1,1]]).max( ))

通过比较测试集中的属性“breakfast”和预测得到的结果,可以得出预测正确的概率为0.6726,说明使用逻辑回归建立的模型预测效果较好,在分类问题上可以选择使用逻辑回归算法进行建模和预测。
4.基于阿里云机器学习PAI平台实现
①开发前环境准备工作:确保已注册阿里云账号,并开通阿里云DataWorks及PAI平台服务。
②数据准备:进入阿里云PAI平台,在“Studio-可视化建模”菜单项中创建项目(注:也可以使用旧项目),并切换到DataWorks平台,打开与阿里云PAI平台同名的工作空间。通过如下SQL语句建表,并导入CSV文件数据,如图1-11所示。
--新建人群属性与早餐饮品数据表
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平台对应项目,新建空白实验,如图1-12所示。
④设计实验流程:本实验中需要用到4个组件,分别是读数据表、拆分、逻辑回归、
预测。其中“源/目标”组中的“读数据表”组件中,设置表名为ODS_BREAKFAST_
INFO;在组件“拆分”中设置拆分比例为0.8;在组件“逻辑回归”中,设置特征列为
age、gender、occupation、marital status, 标签列为breakfast;在组件“预测”中,左侧输
入为逻辑回归模型,右侧输入为表ODS BREAKFAST INFO中数据,如图1-13所示。
⑤运行实验:单击“运行”按钮,等待一段时间,待运行结束后,右击组件“预
测”,查看数据。在数据列表中,字段prediction_result即为基于逻辑回归模型根据age、
gender、occupation、marital_status 预测的早餐饮品,可与真实值breakfast进行比对,如
图1-14所示。



可以通过查看预测结果,和测试集中的属性“breakfast”进行比较,图中罗列的测试
集属性数据和预测结果有6条,其中有3条预测结果相同,说明使用逻辑回归建立的模型
预测效果较好,在分类问题上可以选择使用逻辑回归算法进行建模和预测。
更多推荐
所有评论(0)