逻辑回归算法 - 乳腺癌预测

article/2025/9/16 18:14:51

1 目标

根据历史女性乳腺癌患者数据集(医学指标)构建逻辑回归分类模型进行良/恶性乳腺癌肿瘤预测

2 数据集

  • 2.1 数据集来源

数据集源于威斯康星州临床科学中心。每个记录代表一个乳腺癌的随访数据样本。这些是DR Wolberg自1984~1995随访搜集连续乳腺癌患者数据,数据仅包括那些具有侵入性的病例乳腺癌并没有远处转移的医学指标数据集。

  • 2.2 特征值(医学特征)
    在这里插入图片描述

3 算法

  • 3.1 应用场景
    经典的二分类算法
    广告点击率
    判断用户的性别
    预测用户是否会购买给定的商品类
    判断一条评论是正面的还是负面的
  • 3.2 算法流程

激活函数:映射到概率的函数
激活函数:映射到概率的函数

def sigmoid(z):
return 1 / (1 + np.exp(-z))

预测函数:返回预测结果值
在这里插入图片描述

def model(X, theta):
return sigmoid(np.dot(X, theta.T))

在这里插入图片描述

def cost(X, y, theta):left = np.multiply(-y, np.log(model(X, theta)))right = np.multiply(1 - y, np.log(1 - model(X, theta)))
return np.sum(left - right) / (len(X))

在这里插入图片描述

def gradient(X, y, theta):grad = np.zeros(theta.shape)error = (model(X, theta)- y).ravel()for j in range(len(theta.ravel())): #for each parmeterterm = np.multiply(error, X[:,j])grad[0, j] = np.sum(term) / len(X)return grad

梯度下降 - 模型迭代学习
在这里插入图片描述
寻找山谷的最低点,也就是我们的目标函数终点(什么样的参数能使得目标函数达到极值点)
下山分几步走呢?(更新参数)
(1):找到当前最合适的方向
(2):走那么一小步,走快了该”跌倒 ”了
(3):按照方向与步伐去更新我们的参数

4 应用

  • 4.1 核心算法

    column = ['Sample code number', 'Clump Thickness', 'Uniformity of Cell Size','Uniformity of Cell Shape', 'Marginal Adhesion', 'Single Epithelial Cell Size','Bare Nuclei', 'Bland Chromatin', 'Normal Nucleoli', 'Mitoses ', 'Class']# 读取数据data = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data",names=column)# 缺失值处理:包含16个缺失值,用”?”标出data = data.replace(to_replace='?', value=np.nan)data = data.dropna()# 数据集分割x_train, x_test, y_train, y_test = train_test_split(data[column[1:10]], data[column[10]],test_size=0.25)# 标准化处理:线性回归模型,w1、w2...wn系数需要标准化std = StandardScaler()x_train = std.fit_transform(x_train)x_test = std.transform(x_test)# 逻辑回归算法'''the whole flow, exclude mean cost: 1 Sigmoid function2 model function3 gradient function4 gradient descent@:param C 梯度下降学习率 '''lg = LogisticRegression()param = {"C": [0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5]}'''gridsearch:sk-learn封装api带有网格搜索+交叉验证功能,搜索最优梯度下降学习率超参数@:param cv交叉验证折数    '''gc = GridSearchCV(lg, param_grid=param, cv=10)gc.fit(x_train, y_train)# 网格搜索最优模型model = gc.best_estimator_# 预测测试集y_predict = model.predict(x_test)print("模型预测结果:", y_predict)
    
  • 4.2 模型评估

    '''模型评估分类问题关键点:精确率、准确率、召回率恶性分类问题:现实2问题,召回率(漏查率)非常关注,混淆矩阵可视化预测结果与真实结果对比'''print("准确率:", model.score(x_test, y_test))print("召回率:", classification_report(y_test, y_predict, labels=[2, 4], target_names=['良性', '恶性']))# 预测结果生成混淆矩阵,confusion matrix @also see liner regression model manual generate functiontarget_names = ['begin', 'malignant']mat = confusion_matrix(y_test, y_predict)plt.title("predict-to-true confusion matrix")sns.heatmap(mat.T, square=True, annot=True, fmt='d', cbar=False, xticklabels=target_names,yticklabels=target_names)plt.xlabel('true label')plt.ylabel('predicted label')plt.show()
    
  • 4.3 模型分析报告

    报告: precision recall f1-score support

      良性       0.97      0.97      0.97       109恶性       0.95      0.95      0.95        62
    

    avg / total 0.96 0.96 0.96 171

    混淆矩阵:
    在这里插入图片描述

  • 4.4 算法总结

逻辑回归处理样本分布不均匀-异常场景:
样本分布不均衡将导致样本量少的分类所包含的特征过少,并很难从中提取规律;即使得到分类模型,也容易产生过度依赖于有限的数据样本而导致过拟合的问题,当模型应用到新的数据上时,模型的准确性和鲁棒性将很差。

样本分布不平衡主要在于不同类别间的样本比例差异,以笔者的工作经验看,如果不同分类间的样本量差异达到超过10倍就需要引起警觉并考虑处理该问题,超过20倍就要一定要解决该问题。

样本分布均匀的应用场景:
**异常检测场景。*大多数企业中的异常个案都是少量的,比如恶意刷单、黄牛订单、信用卡欺诈、电力窃电、设备故障等,这些数据样本所占的比例通常是整体样本中很少的一部分,以信用卡欺诈为例,刷实体信用卡的欺诈比例一般都在0.1%以内。

*客户流失场景。*大型企业的流失客户相对于整体客户通常是少量的,尤其对于具有垄断地位的行业巨擘,例如电信、石油、网络运营商等更是如此。

*罕见事件的分析。*罕见事件与异常检测类似,都属于发生个案较少;但不同点在于异常检测通常都有是预先定义好的规则和逻辑,并且大多数异常事件都对会企业运营造成负面影响,因此针对异常事件的检测和预防非常重要;但罕见事件则无法预判,并且也没有明显的积极和消极影响倾向。例如由于某网络大V无意中转发了企业的一条趣味广告导致用户流量明显提升便属于此类。

*发生频率低的事件。这种事件是预期或计划性事件,但是发生频率非常低。例如每年1次的双11盛会一般都会产生较高的销售额,但放到全年来看这一天的销售额占比很可能只有1%不到,尤其对于很少参与活动的公司而言,这种情况更加明显。这种属于典型的低频事件。

处理策略(详细请参阅作者的信用欺诈实例):
过抽样策略,如SMOTE算法
欠抽样策略


http://chatgpt.dhexx.cn/article/2s3arI1R.shtml

相关文章

以《简单易懂》的语言带你搞懂逻辑回归算法【附Python代码详解】机器学习系列之逻辑回归篇

大家早上好,本人姓吴,如果觉得文章写得还行的话也可以叫我吴老师。欢迎大家跟我一起走进数据分析的世界,一起学习! 感兴趣的朋友可以关注我或者我的数据分析专栏,里面有许多优质的文章跟大家分享哦。 目录 必看前言逻辑…

逻辑回归算法梳理(从理论到示例)

逻辑回归算法的名字里虽然带有“回归”二字,但实际上逻辑回归算法是用来解决分类问题的算法。线性回归和逻辑回归相当于一对“孪生兄弟”,本文将从二分类入手,介绍逻辑回归算法的预测函数、损失函数(成本函数)和梯度下…

机器学习 逻辑回归算法应用案例

机器学习 逻辑回归算法应用案例 时间:2020.09.12 出处:https://www.kesci.com/home/project/5bfe39b3954d6e0010681cd1 注明:初学逻辑回归,跟着博客大佬文章过了一遍,自己留个记录以便之后翻阅,也供大家学…

机器学习——逻辑回归算法代码实现

机器学习——逻辑回归算法代码实现 前言一、逻辑回归是什么?二、代码实现1.数据说明2.逻辑回归代码 前言 最近准备开始学习机器学习,后续将对学习内容进行记录,该文主要针对逻辑回归代码实现进行记录! 一、逻辑回归是什么&#x…

逻辑回归算法的优化

一:有无截距: 如上图。可以知道,有截距的线条数比无截距的线条数(过原点的线条)要多。所以在选择逻辑回归的时候,通常要设置截距。增加正确的概率。 代码: val lr = new LogisticRegressionWithSGD() ----创建逻辑回归对象 l…

Python机器学习--回归算法--逻辑回归算法

逻辑回归算法 逻辑回归算法类型: 逻辑回归属于有监督学习的分类算法(只能做二分类) 逻辑回归算法原理: 将线性回归的结果输入sigmoid函数中,得出预测为类1的概率( 如果概率为0.2 有20%的可能属于类1,属于类0的概率…

算法笔记(11)逻辑回归算法及Python代码实现

逻辑回归算法是一种被广泛使用的分类算法,通过训练数据中的正负样本,学习样本特征到样本标签之间的假设函数。逻辑回归假设因变量 y 服从伯努利分布,而线性回归假设因变量 y 服从高斯分布。 因此与线性回归有很多相同之处,去除Sig…

深度学习原理-----逻辑回归算法

系列文章目录 深度学习原理-----线性回归梯度下降法 深度学习原理-----逻辑回归算法 深度学习原理-----全连接神经网络 深度学习原理-----卷积神经网络 深度学习原理-----循环神经网络(RNN、LSTM) 时间序列预测-----基于BP、LSTM、CNN-LSTM神经网络…

逻辑回归算法原理及python实现

文章目录 引言逻辑回归算法原理逻辑回归损失函数 python实现逻辑回归决策边界python实现多项式逻辑回归sklearn中的逻辑回归逻辑回归中的正则化sklearn实现逻辑回归 引言 逻辑回归(Logistic Regression)是一种分类学习算法,其本质是将样本的…

基于逻辑回归算法模型搭建思路

在真实工作场景中,有多种算法依据借贷数据集建立模型,主要使用的算法有逻辑回归、神经网络、决策树、贝叶斯信念网、GBDT算法等,本系列文章旨在为刚入门和对模型感兴趣的同学介绍传统风控模型算法之一——逻辑回归。 前方高能!准…

【机器学习】Logistic Regression 逻辑回归算法详解 + Java代码实现

文章目录 一、逻辑回归简介1.1 什么是逻辑回归1.2 Sigmoid函数1.3 预测函数 二、逻辑回归实战 - Java代码实现 一、逻辑回归简介 1.1 什么是逻辑回归 逻辑回归(Logistic Regression)是一种用于解决二分类(0 or 1)问题的机器学习…

机器学习之逻辑回归算法

文章目录 逻辑回归原理推导逻辑回归求解 逻辑回归(Logistic Regression)是机器学习中的一种分类模型,它是一种分类算法,虽然名字中带有回归,但是它与回归之间有一定的联系。 看到回归二字,很多人可能会认为…

机器学习算法 之 逻辑回归算法

1 逻辑回归之第一次学习 本文内容主要转自两处: [1] 逻辑回归从入门到深入(logistic regression) 本文内容从Python 逻辑回归实际使用的角度出发,较为通俗易懂,感谢其作者的分享。 [2] 《百面机器学习》之逻辑回归 注意&#xf…

逻辑回归算法简介

逻辑回归算法:虽然名字中带有回归两个字,但它却不是回归算法,它是一个经典的二分类算法。 回归与分类的区别: 回归:可以得到一个准确值或一个区间值,比如房屋价格预测,NBA比赛得分等。 分类&am…

逻辑回归算法原理

回归与分类的不同在于其目标变量是否是连续的。分类是预测出一个标签,找到一条线或超平面去区分数据,输出是离散的、有限的。回归是预测出一个量,找到一条线去尽可能的拟合逼近这些数据,输出是连续的、无限的。 逻辑回归本质上是线…

机器学习算法--逻辑回归原理介绍

一、逻辑回归基本概念 1. 什么是逻辑回归 逻辑回归就是这样的一个过程:面对一个回归或者分类问题,建立代价函数,然后通过优化方法迭代求解出最优的模型参数,然后测试验证我们这个求解的模型的好坏。 Logistic回归虽然名字里带“…

逻辑回归算法

逻辑回归算法-龙珠计划 一、逻辑回归算法原理 逻辑回归(Logistic Regression) 属于机器学习 — 监督学习 — 分类。 逻辑回归(Logistic Regression)主要解决二分类问题,用来表示某件事情发生的可能性。 逻辑回归本…

【机器学习】逻辑回归算法

逻辑回归算法 学习目标1. 逻辑回归的介绍1.1 逻辑回归的应用场景1.2 逻辑回归的原理1.2.1 输入1.2.2 激活函数 1.3 损失以及优化1.3.1 损失1.3.2 优化 1.4 小结 2. 逻辑回归api介绍3. 案例:癌症分类预测-良/恶性乳腺癌肿瘤预测3.1 背景介绍3.2 案例分析3…

java中字符流和字节流的区别_java中字节流和字符流有哪些区别

java中字节流和字符流的区别有:1、定义不同;2、结尾不同;3、处理方式不同;4、缓冲区不同;5、编码方式不同。字节流默认不使用缓冲区,而字符流使用缓冲区。字节流采用ASCII编码,字符流采用unicod…