逻辑回归算法详解与Python实现

逻辑回归算法,尽管名字中带有“回归”二字,实际上是机器学习中常用的分类算法之一。它以其直观易懂的数学原理和在Python中的易用性而受到青睐。本文将探讨逻辑回归的基本概念、数学公式、以及如何在Python中实现这一算法。

逻辑回归算法基础

逻辑回归算法主要用于二分类问题,即目标变量只有两种可能的取值。在逻辑回归的数学公式中,有一个线性模型,例如β0 + β1x,这个线性模型被嵌入到一个逻辑函数(也称为Sigmoid函数)中。最终得到的二分类公式如下所示:

P(yi = 1 | X) = 1 / (1 + e^(-(β0 + β1x)))

其中,P(yi = 1 | X)表示第i个观测值的目标值yi属于类别1的概率。β0和β1是待学习的参数,e代表欧拉数。

逻辑回归的主要目标

逻辑回归公式的主要目标是将线性和/或Sigmoid函数的输出限制在0和1之间。这样做的主要原因是为了可解释性,即可以将输出值解释为简单的概率;如果值大于0.5,则预测类别1,否则预测类别0。

Python中的实现

接下来,将通过Python编程语言来实现逻辑回归算法。将使用UCI机器学习库中提供的Ionosphere数据集来进行演示。

# 导入必要的机器学习包 import pandas as pd import numpy as np from sklearn.linear_model import LogisticRegression from sklearn.preprocessing import StandardScaler # 使用Pandas的read_csv方法读取数据 dataframe = pd.read_csv('ionosphere.data', header=None) # 设置Pandas DataFrame的显示设置 pd.set_option('display.max_rows', 10000000000) pd.set_option('display.max_columns', 10000000000) pd.set_option('display.width', 95) # 查看DataFrame的形状,即行数和列数 print('This DataFrame Has %d Rows and %d Columns' % (dataframe.shape)) # 打印DataFrame的前五行 print(dataframe.head()) # 从DataFrame中分离出特征矩阵和目标向量 features_matrix = dataframe.iloc[:, 0:34] target_vector = dataframe.iloc[:, -1] # 检查特征矩阵和目标向量的形状 print('The Features Matrix Has %d Rows And %d Column(s)' % (features_matrix.shape)) print('The Target Matrix Has %d Rows And %d Column(s)' % (np.array(target_vector).reshape(-1, 1).shape)) # 使用scikit-learn的StandardScaler预处理特征矩阵数据 features_matrix_standardized = StandardScaler().fit_transform(features_matrix) # 创建逻辑回归算法的实例,并使用默认参数 algorithm = LogisticRegression(penalty='l2', dual=False, tol=1e-4, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver='lbfgs', max_iter=100, multi_class='auto', verbose=0, warm_start=False, n_jobs=None, l1_ratio=None) # 使用fit方法对特征矩阵和目标向量进行训练 Logistic_Regression_Model = algorithm.fit(features_matrix_standardized, target_vector) # 创建一个观测值,用于测试模型的预测能力 observation = [[1, 0, 0.99539, -0.05889, 0.8524299999999999, 0.02306, 0.8339799999999999, -0.37708, 1.0, 0.0376, 0.8524299999999999, -0.17755, 0.59755, -0.44945, 0.60536, -0.38223, 0.8435600000000001, -0.38542, 0.58212, -0.32192, 0.56971, -0.29674, 0.36946, -0.47357, 0.56811, -0.51171, 0.41078000000000003, -0.46168000000000003, 0.21266, -0.3409, 0.42267, -0.54487, 0.18641, -0.453]] # 存储模型预测的类别值 predictions = Logistic_Regression_Model.predict(observation) # 打印模型对观测值的预测类别 print('The Model Predicted The Observation To Belong To Class %s' % (predictions)) # 查看模型训练时预测的具体类别 print('The Algorithm Was Trained To Predict One Of The Two Classes: %s' % (algorithm.classes_)) # 打印模型对观测值属于各个类别的概率 print("""The Model Says The Probability Of The Observation We Passed Belonging To Class ['b'] Is %s""" % (algorithm.predict_proba(observation)[0][0])) print() print("""The Model Says The Probability Of The Observation We Passed Belonging To Class ['g'] Is %s""" % (algorithm.predict_proba(observation)[0][1]))

通过上述代码,可以看到逻辑回归模型是如何在Python中实现的,以及如何使用它来预测新的观测值属于哪个类别。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485