逻辑回归(Logistic Regression)

逻辑回归的介绍

逻辑回归是一种常用的统计学习方法,用于解决分类问题。尽管名字中带有"回归"一词,但逻辑回归其实是一种分类算法。

逻辑回归的主要是通过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次迭代;\alpha是我们设定的学习率;p(x_{i})就是我们上面所说的P(Y|X_{i}) )

停止迭代的条件是:

(1)到达最大迭代次数

(2)到达规定的误差精度,即||J(w^{k+1})-J(w^{k})||小于等于我们设定的阈值

逻辑回归实现

加载经典的 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))

逻辑回归是一种常用的分类算法,其优点和缺点如下:

优点:

  1. 适合分类场景:逻辑回归适用于二分类问题,而且可以通过一些技巧扩展到多分类问题上。
  2. 计算代价不高,容易理解实现:逻辑回归的计算代价相对较低,且算法本身比较简单,易于理解和实现。
  3. 不需要事先假设数据分布:逻辑回归不依赖于数据的分布情况,避免了假设分布不准确所带来的问题。
  4. 可以得到近似概率预测:逻辑回归不仅可以预测类别,还可以输出样本属于某个类别的概率,这对很多应用场景非常有用。
  5. 目标函数任意阶可导:这使得逻辑回归在优化过程中可以使用梯度下降等高效的优化算法。

缺点:

  1. 容易欠拟合,分类精度不高:逻辑回归在处理复杂的非线性关系时,容易出现欠拟合的情况,导致分类精度不高。
  2. 数据特征有缺失或者特征空间很大时表现效果并不好:当数据特征存在缺失或者特征空间非常大时,逻辑回归的表现可能会受到影响,需要进行特征工程或者使用其他技术来解决这些问题。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值