机器学习六———logistic 回归

定义

Logistic回归是一种用于解决分类问题的线性模型。它使用Logistic函数对输入特征的加权和加上偏置项进行线性组合,然后将结果映射到一个介于0和1之间的概率值,用来表示样本属于某个特定类别的概率。在训练过程中,Logistic回归模型通过最大化似然函数或最小化逻辑损失函数来拟合数据并学习参数。因此,Logistic回归适用于二元分类问题以及多元分类问题。

应用领域

1. 医疗领域:用于预测疾病的风险,诊断疾病,评估患者的生存率或治疗效果等。

2. 金融领域:用于信用评分,欺诈检测,风险管理和贷款违约预测等金融风险相关的应用。

3. 市场营销:用于客户流失预测、市场细分、响应率预测等市场营销策略的制定和评估。

4. 生物信息学:用于预测蛋白质的结构和功能,基因表达模式分析等。

5. 社会科学:用于预测选民投票意向、消费者行为模式、犯罪预测等社会行为相关的分析。

6. 计算机视觉:在图像分析中用于人脸识别、物体检测和图像分类等方面。

这些仅仅是Logistic回归在实际应用中的一些示例,它可以用于许多其他领域的分类和预测问题。

logistic 回归的实现步骤

1. 数据准备:收集并准备好训练数据集和测试数据集,确保数据格式正确,处理缺失值和异常值等数据清洗工作。

2. 特征选择:确定要在模型中使用的特征,并对它们进行预处理,比如标准化或归一化处理。

3. 模型训练:使用训练数据集,通过最大化似然函数或最小化逻辑损失函数来拟合数据,并学习模型的参数。

4. 模型评估:利用测试数据集对模型进行评估,常用指标包括准确率、精准率、召回率和F1分数等。

5. 参数调优:根据评估结果,对模型的参数进行调优,可以使用交叉验证等技术来选择最佳的超参数。

6. 模型应用:在实际问题中应用训练好的模型进行预测和分类。

7. 模型解释和验证:对模型进行解释和验证,了解每个特征的影响以及模型整体的效果。

这些步骤是Logistic回归模型实现过程中的基本步骤,可以根据具体的情况和需求进行调整和扩展。

梯度下降实现代码

import numpy as np
import matplotlib.pyplot as plt

# 生成50个随机样本
np.random.seed(0)
X_train = np.random.rand(50, 2) * 10  # 生成50个在0到10范围内的随机样本
y_train = (X_train[:, 0] + X_train[:, 1] > 10).astype(int)  # 根据一条直线将样本分成两类

# 初始化模型的权重和偏差
theta = np.zeros((X_train.shape[1] + 1, 1))

# 在训练数据上进行模型训练
m = X_train.shape[0]
X_train_bias = np.c_[np.ones((m, 1)), X_train]  # 在特征矩阵中添加偏置项
learning_rate = 0.01
iterations = 1000

for iteration in range(iterations):
    logits = np.dot(X_train_bias, theta)
    y_proba = 1 / (1 + np.exp(-logits))
    loss = -np.mean(y_train * np.log(y_proba) + (1 - y_train) * np.log(1 - y_proba))
    error = y_proba - y_train[:, np.newaxis]  # 调整形状以匹配矩阵乘法的要求
    gradients = 1 / m * np.dot(X_train_bias.T, error)
    theta -= learning_rate * gradients

# 输出回归系数
print("回归系数:", theta[1:])  # 第一个元素是偏置项,后面的元素是回归系数

# 绘制散点图
plt.scatter(X_train[y_train == 0, 0], X_train[y_train == 0, 1], c='r', label='Class 0')
plt.scatter(X_train[y_train == 1, 0], X_train[y_train == 1, 1], c='b', label='Class 1')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('Scatter Plot of Training Data')

# 绘制分类线
x_min, x_max = X_train[:, 0].min(), X_train[:, 0].max()
x_line = np.array([x_min, x_max])
y_line = -(theta[0] + theta[1] * x_line) / theta[2]
plt.plot(x_line, y_line, color='black')

plt.show()

散点图:

回归系数:

总结

在给定的代码中,我们使用梯度下降算法训练了逻辑回归模型,然后对50个随机生成的训练样本进行了二分类。最后,我们通过绘制散点图和分类线来展示了训练数据的分类效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值