机器学习之逻辑回归


前言:主要介绍逻辑回归的公式、损失函数、以及代码的实现。


1 逻辑回归

逻辑回归也称作logistic回归分析,是一种广义的线性回归分析模型,属于机器学习中的监督学习。其推导过程与计算方式类似于回归的过程,但实际上主要是用来解决二分类问题(也可以解决多分类问题)。通过给定的n组数据(训练集)来训练模型,并在训练结束后对给定的一组或多组数据(测试集)进行分类。其中每一组数据都是由p 个指标构成。

2 逻辑回归公式

在这里插入图片描述
输出:[0, 1] 区间的概率值,默认0.5作为阀值
注:g(z)为sigmoid函数
在这里插入图片描述

3 损失函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4 代码实现逻辑回归

预测癌症病理(数据来源:https://archive.ics.uci.edu/ml/machine-learning-databases /)
数据截图:
在这里插入图片描述
代码如下:

from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import classification_report
import pandas as pd
import numpy as np

def logistic():
    """
    逻辑回归做二分类进行癌症预测(根据细胞的属性特征)
    :return: NOne
    """
    column = ['示例代码号码',
              '块厚度',
              '细胞大小的一致性',
              '电池形状的均匀性',
              '边缘附着力',
              '单个上皮细胞大小',
              '裸核',
              '平淡的染色质',
              '正常核仁',
              '有丝分裂',
              '分类']



    # 读取数据
    data = pd.read_csv("breast-cancer-wisconsin.csv", names=column)
    # 缺失值进行处理
    data = data.replace(to_replace='?', value=np.nan)
    data = data.dropna()

    y = data['分类'] #目标值
    x = data[['块厚度', '细胞大小的一致性','电池形状的均匀性','边缘附着力','单个上皮细胞大小','裸核','平淡的染色质','正常核仁','有丝分裂']] #特征值
    # 进行数据的分割   x_train, x_test是特征值  y_train, y_test是目标值
    x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.25)

    # 进行标准化处理
    std = StandardScaler()
    x_train = std.fit_transform(x_train)
    x_test = std.transform(x_test)

    # 逻辑回归预测
    lg = LogisticRegression(C=1.0)
    lg.fit(x_train, y_train)
    print(lg.coef_)
    y_predict = lg.predict(x_test)
    for y1, y2 in zip(y_test, y_predict):
        if y1== y2:
            print("真实值:",y1,"-----","预测值:",y2,"----预测成功!")
        else:
            print("真实值:",y1,"-----","预测值:",y2,"----------------预测失败!")
    print("准确率:", lg.score(x_test, y_test))
    print("召回率:", classification_report(y_test, y_predict, labels=[2, 4], target_names=["良性", "恶性"]))


if __name__ == "__main__":
    logistic()

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

等待着冬天的风

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

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

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

打赏作者

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

抵扣说明:

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

余额充值