逻辑logistic回归

主要用于二分类问题

首先,找一个线性模型: z = w T x + b z = w^{T}x+b z=wTx+b
sigmoid函数: g ( x ) = 1 1 + e − x g(x)=\frac{1}{1+e^{-x}} g(x)=1+ex1

线性模型套到sigmoid函数里,如下图公式:
在这里插入图片描述
逻辑回归的作用:输入特征x,并输出一个介于0和1之间的数,这个数为 标签y取1的概率
在这里插入图片描述
逻辑回归条件概率推导
在这里插入图片描述

决策边界

决策边界推导
在这里插入图片描述
在这里插入图片描述

损失函数

损失函数的意义:
如果模型的预测结果与实际观测结果相差较大,那么损失函数的值就会较大;通过最小化损失函数,我们可以找到一组最优的模型参数,使得模型能够更好地拟合训练数据,提高模型的准确度和泛化能力。所以它是评估模型性能和指导模型优化的关键指标。
损失函数推到由来
在这里插入图片描述
线性回归可以采用平方误差成本函数,得到的图像是凸函数,此时采用梯度下降算法可以得出成本函数的全局最小值。但,逻辑回归若也采用平方误差成本函数,得到的图像是非凸函数,此时采用梯度下降算法,只能得到局部最小值,很难得到全局最小值。(所以不用mse,用交叉熵
损失函数:在这里插入图片描述
在这里插入图片描述
简化后:在这里插入图片描述
该损失函数是凸函数,只有一个局部最小值,也是全局最小值。

逻辑回归的梯度下降法

参考文章
在这里插入图片描述
在这里插入图片描述
多元线性回归的梯度下降相同,因为逻辑回归有多个特征,梯度下降算法在每一步都要对其进行更新,且更新W时,对b也需要同时更新。

  1. 逻辑回归的梯度下降算法和线性回归的梯度下降算法看着很类似,但他们的f(x)函数不同
  2. 逻辑回归的梯度下降算法可以用学习曲线来监测算法是否收敛,也可以用向量化特征缩放简化算法的执行过程,提高算法的速度。

逻辑回归过拟合

在这里插入图片描述
左欠拟合,中刚好,右过拟合

过拟合 解决办法:

  1. 增加数据集,模型变得不那么高方差
  2. 减少一些特征(可能会丢失一些有用信息)
  3. 正则化,缩小特征的参数(通常,我们只缩小Wj,并不缩小b)

正则化

  1. 正则化的逻辑回归中的梯度下降和正则化的线性回归中的表达式看起来一样,但由于两者的模型h(x)不同,所以有很大差别.
  2. θ 0 θ_{0} θ0不参与其中的任何一个正则化.(即都没有对b进行正则化,所以更新b时也不需要进行缩小操作 参考文章

下图参考文章

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 9
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 读取数据,显示前10行数据后后10行数据 ```python import pandas as pd # 读取数据 data = pd.read_csv('breast_cancer.csv') # 显示前10行数据 print(data.head(10)) # 显示后10行数据 print(data.tail(10)) ``` 2. 按照8:2的比例分割数据集为训练集和测试集,显示测试集和数据集的维度 ```python from sklearn.model_selection import train_test_split # 分割数据集为训练集和测试集 train_data, test_data, train_label, test_label = train_test_split(data.iloc[:, :-1], data.iloc[:, -1], test_size=0.2, random_state=0) # 显示训练集和测试集的维度 print("训练集维度:", train_data.shape) print("测试集维度:", test_data.shape) ``` 3. 使用全变量创建逻辑Logistic回归模型,显示模型表达式 ```python from sklearn.linear_model import LogisticRegression # 创建逻辑回归模型 model = LogisticRegression() # 训练模型 model.fit(train_data, train_label) # 显示模型表达式 print("模型表达式:") print("y = ", end="") for i in range(len(model.coef_[0])): print("{:.4f} * x{} + ".format(model.coef_[0][i], i), end="") print("{:.4f}".format(model.intercept_[0])) ``` 4. 使用逐步回归法选择合适的变量创建Logistics回归模型,选出最好的模型,显示模型表达式 ```python from mlxtend.feature_selection import SequentialFeatureSelector from sklearn.linear_model import LogisticRegression # 创建逐步回归选择器 selector = SequentialFeatureSelector(LogisticRegression(), scoring='accuracy', verbose=2, k_features=5, forward=True, n_jobs=-1) # 训练选择器 selector.fit(train_data, train_label) # 显示选择的特征 print("选择的特征:", selector.k_feature_idx_) # 创建逻辑回归模型 model = LogisticRegression() # 训练模型 model.fit(train_data.iloc[:, selector.k_feature_idx_], train_label) # 显示模型表达式 print("模型表达式:") print("y = ", end="") for i in range(len(model.coef_[0])): print("{:.4f} * x{} + ".format(model.coef_[0][i], selector.k_feature_idx_[i]), end="") print("{:.4f}".format(model.intercept_[0])) ``` 5. 计算并显示Logistic回归模型在训练集和验证集上的准确率 ```python from sklearn.metrics import accuracy_score # 在训练集上计算准确率 train_predict = model.predict(train_data.iloc[:, selector.k_feature_idx_]) train_accuracy = accuracy_score(train_label, train_predict) print("训练集准确率:", train_accuracy) # 在验证集上计算准确率 test_predict = model.predict(test_data.iloc[:, selector.k_feature_idx_]) test_accuracy = accuracy_score(test_label, test_predict) print("测试集准确率:", test_accuracy) ``` 6. 分析Logistic回归模型分类结果。 通过对训练集和测试集的准确率进行比较,我们可以看出模型在训练集上的准确率为1.0,而在测试集上的准确率为0.9649,说明模型具有一定的泛化能力,能够较好地对新数据进行分类。同时,我们还可以通过混淆矩阵等工具对模型进行更深入的分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值