物流网站建设方案,淄博网站成功案例,网站备案基础知识,大连工程建设信息网站目录 逻辑回归-分类算法
1 概述
2 sigmoid函数
3 逻辑回归公式
4 逻辑回归的损失函数
5 均方误差与对数自然损失对比
6 sklearn逻辑回归API
7 案例
8 总结 逻辑回归-分类算法
1 概述
逻辑回归#xff08;Logistic Regression#xff09;#xff0c;简称LR。它的特…目录 逻辑回归-分类算法
1 概述
2 sigmoid函数
3 逻辑回归公式
4 逻辑回归的损失函数
5 均方误差与对数自然损失对比
6 sklearn逻辑回归API
7 案例
8 总结 逻辑回归-分类算法
1 概述
逻辑回归Logistic Regression简称LR。它的特点是能够是我们的特征输入集合转化为0和1这两类的概率。一般来说回归不用在分类问题上因为回归是连续型模型而且受噪声影响比较大。如果非要应用进入可以使用逻辑回归。
逻辑回归只能解决二分类问题并且逻辑回归非常擅长解决二分类问题因为任何二分类场景都能得出概率。
逻辑回归的输入和线性回归的输入是一摸一样的所以线性回归会出现的问题逻辑回归也会出现比如过拟合。逻辑回归的核心线性回归的输入到问题分类那就是sigmoid函数
2 sigmoid函数 该函数的特点横坐标是输入的值这些值经过函数映射后得到某个值这些值的特点就是0-1之间也就是说sigmoid能将你的输入转换为一个0-1的值交叉点为0.5
因为概率值就是0-1之间的所以sigmoid就能将逻辑回归的输入转换为一个概率值。
3 逻辑回归公式 e为一个常数2.71 z就是逻辑回归的结果
输出[0,1]区间的概率值默认0.5作为阀值 注g(z)为sigmoid函数
因为逻辑回归也有权重也需要去迭代更新那就应该也要有策略损失函数和优化的过程
4 逻辑回归的损失函数
与线性回归原理相同,但由于是分类问题 损失函数不一样只能通过梯度下降求解
对数似然损失函数 注意逻辑回归是选择某一个类别作为目标作为目标判断的概率注意哪一个类别少判定概率值是指这个类别。假设有A,B两种类型需要判断逻辑回归只做一件事情就是判断属于A的概率是多少不判断属于B的概率或者判断属于B的概率是多少那就不判断属于A的概率当所有样本来了只判断属于A的概率是多少如果是1就是A了如果概率是0.1阈值是0.5那就属于B类。 当目标值为1的时候如果判断的是属于1的概率如果说属于1的概率越来越大目标值是1那损失越来越小。如果判断属于1的概率越来越小那么损失越来越大 当目标值为0的时候如果判断的是属于1的概率如果说属于1的概率越来越大目标值是0那损失越来越大。如果判断属于1的概率越来越小那么损失越来越小
完整的损失函数 cost损失的值越小那么预测的类别准确度更高
假设有四个样本[样本1样本2样本3样本4]对应的目标值为[1,0,0,1]
假设逻辑回归的预测值为[0.6,0.1,0.51,0.7]阈值为0.5那么预测的目标值就位[1,0,1,1]。我们可以看出这个结果是错的但是算法是通过损失函数去衡量那就要建立一个损失函数。就是根据损失函数公式得知每个样本都有损失值那么就是1*log(0.6)0*log(0.1)0*log(0.51)1*log(0.7)。 5 均方误差与对数自然损失对比
均方误差和对数自然损失的优化都可以通过梯度下降损失函数的最低点但是均方误差有一个最低点自然对数损失有很多个最低点
均方误差是不存在局部最低点的只有一个最小值
对数自然损失多个局部最小值是没有全局最低点如下图目前也是没有解决全局最低点的方法只能通过两个方法区尽量改善使其趋近于全局最低点。①多个值随机初始化让他们分别找各自的最低点比较他们每个的最低点②在整个求解的过程中调整学习率。
尽管没有最低点但是通过这两个方法改善效果还是不错的。 6 sklearn逻辑回归API
sklearn.linear_model.LogisticRegression
sklearn.linear_model.LogisticRegression(penalty‘l2’, C 1.0)
penalty‘l2’L2正则化 C正则化力度
Logistic回归分类器 coef_回归系数 7 案例
良恶性乳腺癌肿瘤预测
原始数据的下载地址 https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/
数据描述 主要信息①699条样本共11列数据第一列用语检索的id后9列分别是与肿瘤 相关的医学特征最后一列表示肿瘤类型的数值。2表示良性4表示恶性 ②包含16个缺失值用”?”标出。
哪一个类别少判定概率值是指这个类别因为恶性少所以判定恶性为正例此时良性就是反例。假如良性比较少那就判定良性为正例恶性为反例 注意①数据样本如上因为第一个行没有指定特征值的名字是什么如果pd去读取他的时候没有默认给定每一列的名字那么会默认把第一行当做列表名所以读取的时候要指定列名
②因为缺失值为所以需要修改为np.NaN
实现步骤①网上获取数据工具pandas ②数据缺失值处理、标准化回归都是需要标准化的 ③LogisticRegression估计器流程
pandas使用
pd.read_csv(’’,namescolumn_names)
column_names指定类别名字
return:数据
replace(to_replace’’,value)返回数据
dropna():返回数据
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report# 构造列标签名字
column [Sample code number,Clump Thickness, Uniformity of Cell Size,Uniformity of Cell Shape,Marginal Adhesion,Single Epithelial Cell Size,Bare Nuclei,Bland Chromatin,Normal Nucleoli,Mitoses,Class]
# 读取数据
data pd.read_csv(https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data,namescolumn)
print(data)# 缺失值处理,将替换
data data.replace(to_replace?,valuenp.nan)
# 删除缺失值使用dropna把有缺失值的整行删除
data data.dropna()# 将数据切分分训练集合测试集,切片是的索引是从0开始的
x_train,x_test,y_train,y_test train_test_split(data[column[1:10]],data[column[10]],test_size0.25)# 特征值标准化处理因为是分类问题所以目标值不用标准化
std StandardScaler()
x_train std.fit_transform(x_train)
x_test std.transform(x_test)# 逻辑回归预测
# 有默认值penaltyl2, dualFalse, tol1e-4, C1.0,
log LogisticRegression()
log.fit(x_train,y_train)
print(权重为,log.coef_)# 预测测试集的目标值
y_predict log.predict(x_test)# target_names指定目标分类labels对应目标分类,指定4为恶性2位良性
print(召回率为,classification_report(y_test,y_predict,labels[4,2],target_names[恶性,良性])) 8 总结
应用广告点击率预测、电商购物搭配推荐
优点适合需要得到一个分类概率的场景
缺点当特征空间很大时多分类逻辑回归的性能不是很好 看硬件能力
二分类问题首先想到用逻辑回归问题做。
判别模型与生成模型的区分是否有先验概率有先验概率的为生成模型没有的为判别模型。先验概率就是说是否需要从历史数据中总结出一些概率信息。如朴素贝叶斯求本文概率的时候要先求某个文章的某个类别下某个词的概率Pf1f2..|cP(c)求这些就提前需要在数据中获取这些东西P(c)就是先验概率要先求每个类型的概率是多少。现在某个文章过来了要判断这个文章类别就要判断在历史数据上面他是怎样的一个概率情况
常见的判别模型k-近邻决策树随机森林神经网络
常见生成模型朴素贝叶斯隐马尔可夫模型
朴素贝叶斯和逻辑回归的比较 逻辑回归朴素贝叶斯解决问题二分类多分类应用场景癌症预测二分类需要概率文本分类参数正则化力度没有模型判别模型生成模型相同点得出的结果都有概率解释