sklearn 逻辑回归Demo

本文详细介绍了逻辑回归中的假设表示方法,包括Sigmoid函数作为激活函数的作用,决策边界的设定,以及代价函数的选择,特别是使用sklearn库中的LogisticRegression进行模型训练和预测的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

逻辑回归案例

假设表示

基于上述情况,要使分类器的输出在[0,1]之间,可以采用假设表示的方法。
hθ(x)=g(θTx)h_θ (x)=g(θ^T x)hθ(x)=g(θTx)
其中g(z)=1(1+e−z)g(z)=\frac{1}{(1+e^{−z} )}g(z)=(1+ez)1, 称为逻辑函数(Sigmoid function,又称为激活函数,生物学上的S型曲线)
hθ(x)=1(1+e−θTX)h_θ (x)=\frac{1}{(1+e^{−θ^T X} )}hθ(x)=(1+eθTX)1

其两条渐近线分别为h(x)=0和h(x)=1

在分类条件下,最终的输出结果是:
hθ(x)=P(y=1│x,θ)h_θ (x)=P(y=1│x,θ)hθ(x)=P(y=1│x,θ)

其代表在给定x的条件下 其y=1的概率

P(y=1│x,θ)+P(y=0│x,θ)=1P(y=1│x,θ)+P(y=0│x,θ)=1P(y=1│x,θ)+P(y=0│x,θ)=1

决策边界( Decision boundary)

对假设函数设定阈值h(x)=0.5h(x)=0.5h(x)=0.5
h(x)≥0.5h(x)≥0.5h(x)0.5 时,输出结果y=1.

根据假设函数的性质,当 x≥0时,x≥0时,x0时,h(x)≥0.5
θTxθ^T xθ

<think>好的,用户想要一个Python实现逻辑回归的示例代码或教程。首先,我需要回忆逻辑回归的基本概念和应用场景。根据之前的引用[1],逻辑回归常用于分类任务,比如信用卡反欺诈和CTR预估,因为它输出0到1之间的概率值,适合二分类问题。 接下来,用户需要的是具体的示例代码,所以应该从数据准备、模型训练到评估的完整流程入手。常用的库包括scikit-learn,因为它有LogisticRegression类,简单易用。另外,可能需要用到数据处理的pandas和可视化的matplotlib/seaborn,但用户可能更关注核心代码,所以保持简洁。 考虑到用户可能希望代码可运行,需要包括必要的步骤:加载数据、划分训练集测试集、特征标准化、模型训练、预测和评估。示例数据集可以选择鸢尾花数据集,虽然是多分类,但可以调整为二分类,比如只取两类。或者使用更典型的二分类数据集,比如乳腺癌数据集,可能更合适。 另外,引用[1]提到逻辑回归的局限性是线性分类器,无法处理复杂情况,但作为基线模型很有用。在示例中可能需要说明这一点,或者用户可能想知道如何扩展,但用户当前需求是基础示例,所以先专注于基本实现。 需要检查代码是否正确,比如导入的库是否正确,参数是否合理。比如,在标准化时使用StandardScaler,然后训练模型,计算准确率和混淆矩阵。确保代码没有错误,用户可以复制粘贴运行。 可能还需要解释代码的关键部分,比如模型初始化、训练、预测,以及评估指标的意义。但用户要求的是示例代码,所以解释可能放在注释或简短的说明中。 最后,生成相关问题,引导用户深入,比如参数调优、特征工程、多分类扩展等,这些问题要符合逻辑回归的常见进阶主题,参考引用[1]提到的内容,如与其他算法结合(GBDT+LR)或者应用场景。</think>以下是一个基于Python的完整逻辑回归实现示例,包含数据预处理、模型训练和评估的完整流程: ```python # 导入必要库 import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score, confusion_matrix, ConfusionMatrixDisplay # 加载乳腺癌数据集(二分类) data = load_breast_cancer() X, y = data.data, data.target # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.2, random_state=42) # 特征标准化(重要步骤) scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) # 创建逻辑回归模型 # penalty='l2' 表示使用L2正则化,C=1.0 是正则化强度的倒数 model = LogisticRegression(penalty='l2', C=1.0, solver='liblinear', max_iter=100) # 训练模型 model.fit(X_train, y_train) # 预测测试集 y_pred = model.predict(X_test) y_proba = model.predict_proba(X_test)[:, 1] # 获取正类的预测概率 # 评估模型 accuracy = accuracy_score(y_test, y_pred) print(f"模型准确率:{accuracy:.4f}") # 绘制混淆矩阵 cm = confusion_matrix(y_test, y_pred) disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=data.target_names) disp.plot(cmap=plt.cm.Blues) plt.show() # 输出特征重要性 coefficients = model.coef_[0] feature_importance = pd.DataFrame({ '特征': data.feature_names, '重要性': np.abs(coefficients) }).sort_values(by='重要性', ascending=False) print("\n特征重要性排序:") print(feature_importance.head(10)) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值