逻辑回归算法实现

article/2025/9/16 17:53:56

 

逻辑回归算法原理还是比较容易理解的,根据计算的结果实现一下:

手写的推导过程如下:

然后我们开始写实现的过程

1、写出判断模型准确性的函数,这个比较容易理解

import numpy as np
from math import sqrtdef accuracy_score(y_true, y_predict):"""计算y_true和y_predict之间的准确率"""assert len(y_true) == len(y_predict), \"the size of y_true must be equal to the size of y_predict"return np.sum(y_true == y_predict) / len(y_true)

2、写出来训练数据集和测试数据集的分割函数,这个也可以直接用sklearn中写好的包

import numpy as npdef train_test_split(X, y, test_ratio=0.2, seed=None):"""将数据 X 和 y 按照test_ratio分割成X_train, X_test, y_train, y_test"""assert X.shape[0] == y.shape[0], \"the size of X must be equal to the size of y"assert 0.0 <= test_ratio <= 1.0, \"test_ration must be valid"if seed:np.random.seed(seed)shuffled_indexes = np.random.permutation(len(X))test_size = int(len(X) * test_ratio)test_indexes = shuffled_indexes[:test_size]train_indexes = shuffled_indexes[test_size:]X_train = X[train_indexes]y_train = y[train_indexes]X_test = X[test_indexes]y_test = y[test_indexes]return X_train, X_test, y_train, y_test

3、写出函数的fit过程,求解用的是批量梯度下降法,这个过程和线性回归比较类似

import numpy as npclass LogisticRegression:def __init__(self):"""初始化模型"""self.coef_ = Noneself.intercept_ = Noneself._theta = None#有下划线是私有函数def _sigmod(self,t):return 1./(1.+np.exp(-t))def fit(self,X_train,y_train,eta=0.01,n_iters=1e4):"""根据模型训练数据集X_train,y_train,使用梯度下降法训练Logistic Regression"""assert X_train.shape[0] == y_train.shape[0],\"the size of X_train must be equal to the size of y_trian"#计算损失函数def J(theta,X_b,y):y_hat = self._sigmod(X_b.dot(theta))try:return -np.sum(y*np.log(y_hat) + (1-y)*np.log(1-y_hat))/ len(y)except:return float("inf")def dJ(theta,X_b,y):return X_b.T.dot(self._sigmod(X_b.dot(theta))-y) / len(X_b)def gradient_descent(X_b, y, inital_theta, eta, n_inters=1e4, epsilon=1e-8):theta = initial_thetai_inter = 0while i_inter < n_inters:gradient = dJ(theta, X_b, y)last_theta = thetatheta = theta - eta * gradientif (abs(J(theta, X_b, y) - J(last_theta, X_b, y)) < epsilon):breaki_inter += 1return thetaX_b = np.hstack([np.ones((len(X_train),1)),X_train])initial_theta = np.zeros(X_b.shape[1])self._theta = gradient_descent(X_b,y_train,initial_theta,eta,n_iters)self.intercept_ = self._theta[0]self.coef_ = self._theta[1:]return self

4、写出来预测的概率和预测的分类结果

    #预测的概率函数def predict_proba(self,X_predict):"""给定待预测数据集X_predict,返回X_predict的结果向量"""assert self.intercept_ is not None and self.coef_ is not None,\"Must fit before predixt"assert X_predict.shape[1] == len(self.coef_),\"the feature number of X_predict must be equal to X_train"X_b = np.hstack([np.ones((len(X_predict),1)), X_predict])return  self._sigmod(X_b.dot(self._theta))#预测结果的函数def predict(self,X_predict):"""给定预测数据集X_predict,返回表示X_predict的结果向量"""assert self.intercept_ is not None and self.coef_ is not None,\"Must fit before predixt"assert X_predict.shape[1] == len(self.coef_),\"the feature number of X_predict must be equal to X_train"proba = self.predict_proba(X_predict)return np.array(proba >= 0.5, dtype='int')def score(self, X_test, y_test):"""根据测试数据集X_test和y_test确定当前模型的准确度"""y_predict = self.predict(X_test)return accuracy_score(y_test,y_predict)def __repr__(self):return  "LogisticRegression()"

5、然后用iris数据集验证下我们写的函数

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.model_selection import train_test_splitiris = datasets.load_iris()
X = iris.data
y = iris.targetX = X[y<2, :2]
y = y[y<2]plt.scatter(X[y ==0,0],X[y==0,1],color='red')
plt.scatter(X[y ==1,0],X[y==1,1],color='blue')
plt.show()X_train,X_test,y_train,y_test = train_test_split(X,y)log_reg = LogisticRegression()
log_reg.fit(X_train,y_train)log_reg.score(X_test,y_test)

结果如下:

6、我们输出一下概率和每个的分类结果

7、总结

自己实现一下算法还是很有好处的,虽然中间有的函数也不知道为什么这样调用什么的,但是编程就是多写,写的多了应该就能有进步。

还有,自己实现一下(也是看着教程写的)有助于理解公式和sklearn的设计方式,细节性的东西比较容易把握到,比起公式的抽象,编程实现更能把两者结合起来。


http://chatgpt.dhexx.cn/article/ieFMtJ7N.shtml

相关文章

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

1 目标 根据历史女性乳腺癌患者数据集&#xff08;医学指标&#xff09;构建逻辑回归分类模型进行良&#xff0f;恶性乳腺癌肿瘤预测 2 数据集 2.1 数据集来源 数据集源于威斯康星州临床科学中心。每个记录代表一个乳腺癌的随访数据样本。这些是DR Wolberg自1984~1995随访搜…

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

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

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

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

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

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

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

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

逻辑回归算法的优化

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

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

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

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

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

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

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

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

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

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

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

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

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

机器学习之逻辑回归算法

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

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

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

逻辑回归算法简介

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

逻辑回归算法原理

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

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

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

逻辑回归算法

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

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

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