逻辑回归的介绍
逻辑回归是一种常用的统计学习方法,用于解决分类问题。尽管名字中带有"回归"一词,但逻辑回归其实是一种分类算法。
逻辑回归的主要是通过Sigmoid函数,将输入特征的线性组合映射到0到1之间的概率值,然后根据这个概率值来进行分类判定。通常当概率大于0.5时,被分类为正类;当概率小于等于0.5时,被分类为负类。
逻辑回归的理论
一个二分类问题,根据输入特征 x 来预测输出类别 y。逻辑回归通过将线性组合的结果通过sigmoid函数映射到[0,1]之间的概率来实现这一目标。
首先,线性组合的模型为:
z = w^T * x + b
其中,w 是特征的权重向量,b 是偏置项,x 是输入特征向量。
sigmoid函数:
公式
图像
条件概率
使用sigmoid函数将 z 转换为一个概率值:
上述公式中,p(y=1|x) 表示在给定输入 x 的情况下输出为类别 1 的概率,p(y=0|x) 则表示输出为类别 0 的概率。
梯度下降
通过 J(w) 对 w 的一阶导数来找下降方向,并以迭代的方式来更新参数
(这里的k代表的是第k次迭代;是我们设定的学习率;就是我们上面所说的 )
停止迭代的条件是:
(1)到达最大迭代次数
(2)到达规定的误差精度,即小于等于我们设定的阈值
逻辑回归实现
加载经典的 iris 数据集,将其特征和目标值分别存储在 x
和 y
中。
# 加载 iris 数据集
iris = load_iris()
col = iris['feature_names']
x = pd.DataFrame(iris.data, columns=col)
y = pd.DataFrame(iris.target, columns=['target'])
从指定的 CSV 文件中加载另一个数据集,存储在 DataFrame df
中。
df = pd.read_csv(r'C:\Users\86187\Desktop\iris.csv')
使用 train_test_split
函数将 iris 数据集划分为训练集和测试集。
# 划分训练集和测试集
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=1)
创建逻辑回归模型对象,并使用训练集对其进行训练。
model = LogisticRegression()
model.fit(x_train, y_train)
对测试集进行预测,得到预测结果 y_pred
。
y_pred = model.predict(x_test)
最后,打印出分类报告,包括精确度、召回率、F1值等指标。
# 打印分类报告
print(classification_report(y_test, y_pred))
逻辑回归是一种常用的分类算法,其优点和缺点如下:
优点:
- 适合分类场景:逻辑回归适用于二分类问题,而且可以通过一些技巧扩展到多分类问题上。
- 计算代价不高,容易理解实现:逻辑回归的计算代价相对较低,且算法本身比较简单,易于理解和实现。
- 不需要事先假设数据分布:逻辑回归不依赖于数据的分布情况,避免了假设分布不准确所带来的问题。
- 可以得到近似概率预测:逻辑回归不仅可以预测类别,还可以输出样本属于某个类别的概率,这对很多应用场景非常有用。
- 目标函数任意阶可导:这使得逻辑回归在优化过程中可以使用梯度下降等高效的优化算法。
缺点:
- 容易欠拟合,分类精度不高:逻辑回归在处理复杂的非线性关系时,容易出现欠拟合的情况,导致分类精度不高。
- 数据特征有缺失或者特征空间很大时表现效果并不好:当数据特征存在缺失或者特征空间非常大时,逻辑回归的表现可能会受到影响,需要进行特征工程或者使用其他技术来解决这些问题。