企业网站网页设计有哪些,wordpress分类目录样式模板,佛山企业网站建设平台,wordpress高端#x1f368; 本文为#x1f517;365天深度学习训练营 中的学习记录博客#x1f356; 原作者#xff1a;K同学啊 在周将使用 LogisticRegression 函数对经典的鸢尾花 (Iris) 数据集进行分类。将详细介绍逻辑回归的数学原理。
1. 逻辑回归的数学原理
逻辑回归是一种线性分… 本文为365天深度学习训练营 中的学习记录博客 原作者K同学啊 在周将使用 LogisticRegression 函数对经典的鸢尾花 (Iris) 数据集进行分类。将详细介绍逻辑回归的数学原理。
1. 逻辑回归的数学原理
逻辑回归是一种线性分类算法常用于二分类问题。它的核心思想是通过将线性回归模型的输出通过一个 Sigmoid 函数映射到一个 0 到 1 之间的概率值从而进行分类。
1.1 线性模型
逻辑回归的线性模型与线性回归相似其形式为 z β 0 β 1 x 1 β 2 x 2 ⋯ β n x n z \beta_0 \beta_1 x_1 \beta_2 x_2 \dots \beta_n x_n zβ0β1x1β2x2⋯βnxn
其中
( z ) 是线性组合的输出( x 1 x_1 x1, x 2 x_2 x2, … \dots …, x n x_n xn) 是特征变量( β 0 \beta_0 β0 ) 是截距常数项( β 1 , … , β n \beta_1, \dots, \beta_n β1,…,βn ) 是特征变量的系数。
1.2 Sigmoid 函数
线性模型输出 ( z ) 之后通过 Sigmoid 函数将其转化为概率 y ^ σ ( z ) 1 1 e − z \hat{y} \sigma(z) \frac{1}{1 e^{-z}} y^σ(z)1e−z1
Sigmoid 函数的输出值是一个概率范围在 0 到 1 之间。当概率 ( y ^ ≥ 0.5 \hat{y} \geq 0.5 y^≥0.5) 时我们预测为正类1否则预测为负类0。
1.3 损失函数对数损失
为了找到最优的系数 ( β \beta β )我们需要最小化损失函数。逻辑回归的损失函数为对数损失函数log loss L ( β ) − 1 m ∑ i 1 m [ y ( i ) log ( y ^ ( i ) ) ( 1 − y ( i ) ) log ( 1 − y ^ ( i ) ) ] L(\beta) - \frac{1}{m} \sum_{i1}^{m} \left[ y^{(i)} \log(\hat{y}^{(i)}) (1 - y^{(i)}) \log(1 - \hat{y}^{(i)}) \right] L(β)−m1i1∑m[y(i)log(y^(i))(1−y(i))log(1−y^(i))]
其中
( m ) 是样本数( y ( i ) y^{(i)} y(i) ) 是第 ( i i i ) 个样本的真实标签( y ^ ( i ) \hat{y}^{(i)} y^(i)) 是第 ( i i i ) 个样本的预测概率。
通过梯度下降法或其他优化算法逻辑回归模型可以根据最小化该损失函数来找到最优的参数 ( β \beta β )。
2. LogisticRegression 函数介绍
LogisticRegression(penaltyl2, # 正则化类型l1, l2, elasticnet, nonedualFalse, # 双对偶或原始方法tol0.0001, # 优化过程的容差C1.0, # 正则化强度的倒数较小的值表示较强的正则化fit_interceptTrue, # 是否拟合截距项intercept_scaling1, # 拦截截距的缩放系数class_weightNone, # 给定类别的权重balanced 或 dictrandom_stateNone, # 随机数种子solverlbfgs, # 优化算法{newton-cg, lbfgs, liblinear, sag, saga}max_iter100, # 最大迭代次数multi_classauto, # 处理多类分类问题的方法{auto, ovr, multinomial}verbose0, # 是否在训练过程中输出日志信息warm_startFalse, # 是否使用上次调用的解作为初始解n_jobsNone, # 并行处理的作业数量l1_ratioNone # 混合正则化的弹性网络的l1比例
)3. 鸢尾花数据分类
鸢尾花数据集是一个经典的多分类数据集包含 150 个样本分为 3 类Setosa、Versicolor、Virginica每类 50 个样本。每个样本有 4 个特征花萼长度、花萼宽度、花瓣长度、花瓣宽度。
以下是完整的代码实现
import numpy as np
import pandas as pd
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
from sklearn.linear_model import LogisticRegression# 1. 加载鸢尾花数据集
iris datasets.load_iris()
X iris.data # 特征矩阵
y iris.target # 目标变量# 2. 特征标准化
scaler StandardScaler()
X_scaled scaler.fit_transform(X)# 3. 划分训练集和测试集80% 训练集20% 测试集
X_train, X_test, y_train, y_test train_test_split(X_scaled, y, test_size0.2, random_state42)# 4. 逻辑回归模型
model LogisticRegression(max_iter200)
model.fit(X_train, y_train)# 5. 模型预测
y_pred model.predict(X_test)# 6. 模型评估
accuracy accuracy_score(y_test, y_pred)
print(f模型的准确率: {accuracy:.2f})# 打印分类报告
print(分类报告:)
print(classification_report(y_test, y_pred, target_namesiris.target_names))# 打印混淆矩阵
print(混淆矩阵:)
print(confusion_matrix(y_test, y_pred))4. 总结
本周学习了逻辑回归的数学原理并通过鸢尾花数据集展示了如何使用 LogisticRegression 进行多分类任务。为后续学习打下基础。