0_(机器学习)逻辑回归介绍

news2025/1/22 17:53:07

模型简介

逻辑回归(logistic回归)即对数几率回归,它虽然被称作“回归”,但却是一种用于二分类的分类方法。逻辑回归是通过分析一个样本被分为各个类的概率比较后得出该样本最有可能属于的类的一种分类方法。

逻辑回归公式推导

 

 

 训练、测试过程简述

 

代码实现 

from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
import math
import numpy as np
'''定义sigmoid函数'''
def sigmoid(x):
    if x>0:
        return 1.0/(1.0+np.exp(-x))
    else:
        return np.exp(x)/(1.0+np.exp(x))

class LogisticRegression:
    def __init__(self,learning_rate=0.01,num_iterations=1000):
        self.learning_rate=learning_rate
        self.num_iterations=num_iterations
        self.weights=None
        self.bias=None

    def fit(self,X,y,weights,bias=0):
        #num_samples是样本的数量,num_features是样本特征的数量
        num_samples,num_features=X.shape
        self.weights=weights
        self.bias=bias
        for _ in range(self.num_iterations):
            y_pred=[]
            for x in X:
                dot=np.dot(x, self.weights)
                linear_model = dot + self.bias
                y_pred.append(sigmoid(linear_model))
            y_pred=np.array(y_pred)
            dw = (1 / num_samples) * np.dot(X.T, (y_pred - y))
            db = (1 / num_samples) * np.sum(y_pred - y)
            self.weights -= self.learning_rate * dw
            self.bias -= self.learning_rate * db

    def predict_prob(self, X):
        y_pred = []
        for x in X:
            dot = np.dot(x, self.weights)
            linear_model = dot + self.bias
            y_pred.append(sigmoid(linear_model))
        y_pred = np.array(y_pred)
        return y_pred

    def predict(self, X, threshold=0.5):
        y_pred_prob = self.predict_prob(X)
        y_pred = np.zeros_like(y_pred_prob)
        y_pred[y_pred_prob >= threshold] = 1
        return y_pred
    def calculate_accuracy(self,y_pred,y_test):
        sum=0
        for p,t in zip(y_pred,y_test):
            if p==t:
                sum+=1
        return float(sum)/float(len(y_pred))

if __name__ == "__main__":
    l=LogisticRegression()
    breast_cancer = load_breast_cancer()
    X = breast_cancer.data
    y = breast_cancer.target
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)
    num_samples, num_features = X.shape
    #w = np.ones(num_features)
    w = np.zeros(num_features)
    l.fit(X_train,y_train,w)

    y_pred=l.predict(X_test)
    print(y_pred)
    print(y_test)
    print("准确率:",l.calculate_accuracy(y_pred,y_test))





 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1978303.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《Python数据结构精要:选择与应用》

本文将深入探讨Python中的几种常见数据结构,并通过实际案例来展示它们的应用场景和优缺点。通过本文的学习,读者可以更好地理解何时使用哪种数据结构以达到最优的程序性能。 正文内容: 引言 介绍数据结构的重要性及其在Python中的实现。简…

8.4 字符串中等 443 String Compression 467 Unique Substrings in Wraparound String

443 String Compression 注意&#xff1a;这里是按照顺序压缩&#xff0c;不忽略顺序就不能用字母表计数再还原了。 如果char num 1 只需要压入char本身 num > 1 时还需要压入char的个数 按字符压入 class Solution { public:vector<char> Push(vector<char>&a…

吴恩达机器学习COURSE1 WEEK3

COURSE1 WEEK3 逻辑回归 逻辑回归主要用于分类任务 只有两种输出结果的分类任务叫做二元分类&#xff0c;例如预测垃圾邮件&#xff0c;只能回答是或否 实际上&#xff0c;在逻辑回归中&#xff0c;我们要做的任务就类似于在数据集中画出一个这样的曲线&#xff0c;用来作为…

数据拯救利器:必备免费数据恢复软件清单

说起办公室里的那些小插曲&#xff0c;有时候真是让人哭笑不得。这不&#xff0c;前几天我就遇到了个大麻烦——硬盘分区一不小心给搞砸了&#xff0c;眼看着那些重要的文件、报告还有客户资料就要跟我“说拜拜”&#xff0c;心里那个急啊&#xff0c;简直就像热锅上的蚂蚁&…

CSP2019第二题: 公交换乘

CSP 2019 公交换乘 题目来源&#xff1a;牛客网 题目&#xff1a;* 示例1 输入 6 0 10 3 1 5 46 0 12 50 1 3 96 0 5 110 1 6 135输出 36题意&#xff1a; 根据输入&#xff0c;计算地铁花费不能用到优惠券的公交车的花费 知识点&#xff1a; 结构体 思路&#xff1…

Spring(Day2)

一、静态代理 静态代理的主要特点是代理类和被代理类通常具有相同的接口&#xff0c;这样客户端代码可以透明地使用代理类代替被代理类。 首先我们建立一个接口Shopping&#xff0c;在里面定义一个shopping方法。然后创建两个类EasyA和Proxy类来继承Shopping类&#xff0c;并重…

前端 react 实现图片上传前压缩 缩率图

目录 一、安装 二、编写工具类 三、获取压缩后的File对象 一、安装 npm install compressorjs 或 yarn add compressorjs 官方文档&#xff1a;compressorjs - npm (npmjs.com) 二、编写工具类 /*** author Dragon Wu* since 2024/8/4 12:23* 图片压缩工具*/ import Com…

《无畏契约》现已正式登陆Xbox Series X|S和PS5主机

拳头游戏日前已在没有任何通知的情况下直接在 Xbox Series X|S 和 PS5 主机上推出了其竞技射击游戏《无畏契约》。经过6 月的短暂测试后&#xff0c;游戏的主机版已经在美国、加拿大、欧洲、日本和巴西推出&#xff0c;将包括与 PC 版相同的玩法、英雄和技能。 主机版本将永远不…

论网络流(最大流篇)--新手入门超详解--包教包会

论网络流--新手入门超详解--包教包会 1 前言2 什么是最大流3最大流问题的求解&#xff08;1&#xff09;问题转化--增广路的引入&#xff08;2&#xff09;走回头路--EK算法&#xff08;3&#xff09;EK的弊端&#xff08;4&#xff09;化图为树--DINIC算法 4后记 1 前言 网络…

小型空气净化器什么牌子好?小型空气净化器用户体验

自从家里有了4只英短后&#xff0c;一到季节我就得不停的拖地刷床&#xff0c;除了这些可以手动清理的猫毛之外&#xff0c;那么空气中的猫毛怎么办&#xff1f;多猫家庭确实很快乐&#xff0c;但一到换毛季&#xff0c;家里地上、空气里全是猫毛。每天都需要拼命的吸地板&…

Linux命令用法

文章目录 前言一、Linux基础命令1. Linux目录结构2. Linux命令入门3. 目录切换相关命令&#xff08;cd、pwd&#xff09;4. 相对路径、绝对路径和特殊路径符5. 创建目录命令&#xff08;(mkdir&#xff09;6. 文件操作命令part1(touch、cat、more&#xff09;7. 文件操作命令pa…

经验分享|temu电商项目怎么做能更好的盈利?

在当今竞争激烈的电商市场中&#xff0c;如何让TEMU这样的电商项目实现更好的盈利&#xff0c;是每个创业者和企业家关注的核心问题。以下是几点关键的策略和方法&#xff0c;可以帮助TEMU电商项目实现更好的盈利。 首先&#xff0c;产品选择和定位至关重要 TEMU需要选择具有市…

黑马Java零基础视频教程精华部分_10_面向对象进阶(2)_多态、包、final、权限修饰符、代码块

系列文章目录 文章目录 系列文章目录一、多态1、什么是多态&#xff1f;2、多态的表现形式3、多态的前提4、多态的好处5、多态调用成员的特点6、多态的优势和弊端7、引用数据类型的类型转换 二、包1、什么是包&#xff1f;2、包名的规则3、使用其他类的规则 三、final 最终的&a…

通过指令深入了解Linux

1.简单介绍XShell 未来我的所有关于Linux的讲解都是提供XShell登入远程的Linux云服务器来教学的&#xff0c;且以centos为例。 1.1下载安装XShell xshell 下载安装时选择“home/school”为免费版本。 1.2 使用XShell登录主机 在XShell终端输入 ssh rootip ip为你所购买的…

功能实现——使用 RestTemplate 进行跨项目接口调用

目录 1.需求说明2.项目环境搭建3.代码实现3.1.使用 RestTemplate 进行调用3.1.1.项目 A3.1.2.项目 B 3.2.测试3.3.使用 JsonObject 来传递和接收 json 数据3.3.1.说明3.3.2.代码实现 3.4.其它说明3.4.1.restTemplate.exchange()3.4.2.restTemplate.postForObject()3.4.3.区别总…

【Java】Java学生成绩管理系统(源码+论文)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

Ubuntu 18.04,调整字体大小, 隐藏GNOME顶部状态栏

先安装 sudo apt-get install gnome-tweak-tool sudo apt install gnome-shell-extensions 安装后出现这个界面 这里可以调整字体大小 安装工具扩展&#xff1a; sudo apt-get install gnome-shell-extension-autohidetopbar 这里可以出现设置项 打开&#xff0c;并且…

【Altium Designer】Details Net has only one pin (Pin U1-12) 解决办法

报错图&#xff1a; 报错含义&#xff1a; Details Net has only one pin (Pin U1-12) 引脚label没接其他元器件。 解决办法1 修改报告提示&#xff0c;将“错误”改为“不报告”&#xff0c;如下图&#xff0c;在工程上 右键>>工程选项>>找到相应的错误标签提示…

个人主体的小程序可以变更为企业主体吗?

小程序迁移变更主体有什么作用&#xff1f;长期以来&#xff0c;由于部分小程序在注册时&#xff0c;主体不准确的历史原因&#xff0c;或者小程序的主体发生合并、分立或业务调整等现实状况&#xff0c;在小程序登记主体不能对应实际运营人的情况下&#xff0c;导致账号在认证…

基于微信小程序的微课堂笔记的设计与实现(源码+论文+部署讲解等)

博主介绍&#xff1a;✌全网粉丝10W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术栈介绍&#xff1a;我是程序员阿龙&#xff…