【机器学习】分类算法 - 朴素贝叶斯 MultinomialNB

这篇具有很好参考价值的文章主要介绍了【机器学习】分类算法 - 朴素贝叶斯 MultinomialNB。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

「作者主页」:士别三日wyx
「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者
「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》

md5() 可以计算字符串的「MD5散列值」

语法

string md5( $str, raw)

参数

  • $str :需要计算的字符串
  • raw :指定十六进制或二进制输出格式

返回值

计算成功,就返回MD5值;计算失败,就返回false。

1、基础使用

平时使用最多的就是「计算MD5」

实例:

echo md5('hello');

输出:

5d41402abc4b2a76b9719d911017c592

2、输出格式

raw 参数控制输出的「格式」

  • true :16个字符的「二进制格式」
  • false :(默认)32个字符的十六进制格式

如果你在项目中遇到MD5「加密结果不一致」的问题,可以观察两个加密结果的长度是否相同,比如一个结果是16位,而另一个结果是32位,这种情况就可以考虑更换输出格式来解决。

实例:

var_dump(md5('hello', true));
var_dump(md5('hello', false));

输出:

string(16) "]A@*�K*v�q��Œ"
string(32) "5d41402abc4b2a76b9719d911017c592"

3、科学计数法(0e绕过)

md5() 遇到「公式」,会先「运算」,再对运算结果「计算」MD5。

由于0和任何数相乘都等于0,所以0e开头的任何数,其MD5都是相同的。

比如 md5('0e1234'),会先运算成 md5(0),再计算MD5值。

补充:

0e是科学计数法,大小写等价,即 0e 和 0E 的结果相同。
科学记数法是一种记数的方法。把一个数表示成a与10的n次幂相乘的形式。
格式为:aEb=a×10^b,即a乘以10的b次幂。

实例:

echo md5(0).PHP_EOL;
echo md5(0e123).PHP_EOL;
echo md5(0e456).PHP_EOL;
echo md5(0E456);

输出:

cfcd208495d565ef66e7dff9f98764da
cfcd208495d565ef66e7dff9f98764da
cfcd208495d565ef66e7dff9f98764da
cfcd208495d565ef66e7dff9f98764da

绕过思路1:遇到弱比较( md5(a)==md5(b) )时,可以使用 0e绕过。

实例:

var_dump(md5(0e123) === md5(0e456));
var_dump(md5(0e123) == md5(0e456));

输出:

bool(true)
bool(true)

0e绕过还有一种变体:如果某个字符串的MD5值是0e开头的,在比较时,PHP也会先把它计算成 0,再参与比较。

绕过思路2:遇到若比较( md5(a)==0 ),可以传入QNKCDZO等绕过。

echo md5('QNKCDZO').PHP_EOL;
var_dump(md5('QNKCDZO') == 0);

输出:

0e830400451993494058024219903391
bool(true)

一些MD5值为0e开头的字符串:

QNKCDZO   => 0e830400451993494058024219903391
240610708 => 0e462097431906509019562988736854
s878926199a => 0e545993274517709034328855841020
s155964671a => 0e342768416822451524974117254469
s214587387a => 0e848240448830537924465865611904
s214587387a => 0e848240448830537924465865611904

4、数组类型(数组绕过)

md5() 不能处理数组,数组都返回null。同时会报一个Warning,不影响执行,不用管。

实例:

var_dump(md5([1,2]));
var_dump(md5([3,4]));

输出:

Warning: md5() expects parameter 1 to be string,
NULL
Warning: md5() expects parameter 1 to be string,
NULL

绕过思路:遇到强比较(a===b)时,可以使用数组绕过。GET传参时,以 a[]=1&b[]=2 这种形式传递数组。

实例:

$a = array(1,2,3);
$b = array(4,5,6);

var_dump(md5($a)===md5($b));

输出:

Warning: md5() expects parameter 1 to be string,
Warning: md5() expects parameter 1 to be string,
bool(true)

5、算数运算配合自动类型转换

md5() 遇到运算符,会先运算,再计算结果的MD5值。

实例:

echo md5(1+2).PHP_EOL;
echo md5(3).PHP_EOL;
echo md5(1*2).PHP_EOL;
echo md5(2).PHP_EOL;
echo md5(1&1).PHP_EOL;
echo md5(true);

输出:

eccbc87e4b5ce2fe28308fd9f2a7baf3
eccbc87e4b5ce2fe28308fd9f2a7baf3
c81e728d9d4c2f636f067f89cc14862c
c81e728d9d4c2f636f067f89cc14862c
c4ca4238a0b923820dcc509a6f75849b
c4ca4238a0b923820dcc509a6f75849b

当字符串与数字类型运算时,会将字符串转换成数字类型,再参与运算,最后计算运算结果的MD5值。

实例:

echo md5('1'+2).PHP_EOL;
echo md5(3).PHP_EOL;
echo md5('1'*2).PHP_EOL;
echo md5(2);

输出:

eccbc87e4b5ce2fe28308fd9f2a7baf3
eccbc87e4b5ce2fe28308fd9f2a7baf3
c81e728d9d4c2f636f067f89cc14862c
c81e728d9d4c2f636f067f89cc14862c

6、数值类型

虽然 md5() 要求传入字符串,但传入整数或小数也不会报错;数字相同时,数值型和字符串的计算结果是相同的。

实例:

var_dump(md5(123));
var_dump(md5('123'));
var_dump(md5(10.1));
var_dump(md5('10.1'));

输出:文章来源地址https://www.toymoban.com/news/detail-621535.html

string(32) "202cb962ac59075b964b07152d234b70"
string(32) "202cb962ac59075b964b07152d234b70"
string(32) "88d1955de012defb14b2db6f4797ff20"
string(32) "88d1955de012defb14b2db6f4797ff20"

到了这里,关于【机器学习】分类算法 - 朴素贝叶斯 MultinomialNB的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【机器学习 | 朴素贝叶斯】朴素贝叶斯算法:概率统计方法之王,简单有效的数据分类利器

    【机器学习 | 朴素贝叶斯】朴素贝叶斯算法:概率统计方法之王,简单有效的数据分类利器

    🤵‍♂️ 个人主页: @AI_magician 📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!🐱‍🏍 🙋‍♂️声明:本人目前大学就读于大二,研究兴趣方向人工智能硬件(虽然硬件还没开始玩,但一直

    2024年02月15日
    浏览(12)
  • Spark-机器学习(5)分类学习之朴素贝叶斯算法

    Spark-机器学习(5)分类学习之朴素贝叶斯算法

    在之前的文章中,我们学习了回归中的逻辑回归,并带来简单案例,学习用法。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。 Spark-机器学习(4)回归学习之逻辑回归-CSDN博客 文章浏览阅读2.6k次

    2024年04月28日
    浏览(18)
  • 基于机器学习算法:朴素贝叶斯和SVM 分类-垃圾邮件识别分类系统(含Python工程全源码)

    基于机器学习算法:朴素贝叶斯和SVM 分类-垃圾邮件识别分类系统(含Python工程全源码)

    本项目采用朴素贝叶斯和支持向量机(SVM)分类模型作为基础,通过对垃圾邮件和正常邮件的数据进行训练,旨在实现垃圾邮件的自动识别功能。 通过训练这两个分类模型,我们的目标是建立一个高效准确的垃圾邮件识别系统。当接收到新的邮件时,系统将对邮件文本进行预

    2024年02月09日
    浏览(19)
  • python机器学习——分类模型评估 & 分类算法(k近邻,朴素贝叶斯,决策树,随机森林,逻辑回归,svm)

    python机器学习——分类模型评估 & 分类算法(k近邻,朴素贝叶斯,决策树,随机森林,逻辑回归,svm)

    交叉验证:为了让被评估的模型更加准确可信 交叉验证:将拿到的数据,分为训练和验证集。以下图为例:将数据分成5份,其中一份作为验证集。然后经过5次(组)的测试,每次都更换不同的验证集。即得到5组模型的结果,取平均值作为最终结果。又称5折交叉验证。 通常情

    2024年02月03日
    浏览(19)
  • 【Chatgpt4 教学】 NLP(自然语言处理)第九课 朴素贝叶斯分类器的工作原理 机器学习算法

    我在起,点更新NLP自然语言处理==》《 王老师带我成为救世主 》 为啥为它单独开章,因为它值得,它成功的让我断了一更,让我实践了自上而下找能够理解的知识点,然后自下而上的学习给自己的知识升级,将自己提升到能够解决当前遇到的问题的水平。 (1)--------------

    2023年04月15日
    浏览(14)
  • 机器学习--朴素贝叶斯分类器

    第1关:条件概率 什么是条件概率 概率指的是某一事件 A 发生的可能性,表示为 P(A) 。而条件概率指的是某一事件 A 已经发生了条件下,另一事件 B 发生的可能性,表示为 P(B|A) ,举个例子: 今天有 25% 的可能性下雨,即 P(下雨)=0.25 ; 今天 75% 的可能性是晴天,即 P(晴天)=0.7

    2024年02月08日
    浏览(10)
  • 机器学习实验 - 朴素贝叶斯分类器

    机器学习实验 - 朴素贝叶斯分类器

    报告内容仅供学习参考,请独立完成作业和实验喔~ 1.1 实验要求 (1)了解朴素贝叶斯与半朴素贝叶斯的区别与联系,掌握高斯分布、多项式分布和伯努利分布的朴素贝叶斯计算方法。 (2)编程实现朴素贝叶斯分类器,基于多分类数据集,使用朴素贝叶斯分类器实现多分类预

    2024年02月09日
    浏览(12)
  • 机器学习笔记07---朴素贝叶斯分类器

    机器学习笔记07---朴素贝叶斯分类器

    贝叶斯决策论是概率框架下实施决策的基本方法。对分类任务来说,在所有相关概率都已知的理想情形下,贝叶斯决策论考虑如何基于这些概率和误判损失来选择最优的类别标记。     贝叶斯公式:  其中,P(c)是类\\\"先验\\\"概率;P(x|c)是样本x相对于类标记c的类条件概率,或称

    2024年02月07日
    浏览(15)
  • 机器学习-基于朴素贝叶斯的垃圾邮件分类

    机器学习-基于朴素贝叶斯的垃圾邮件分类

    概率论是许多机器学习算法的基础,此篇博客会给出一些使用概率论进行分类的方法。 首先从一个最简单的概率分类器开始,然后给出一些假设来学习朴素贝叶斯分类器。我们称之为“朴素”,是因为整个形式化过程只做最原始、最简单的假设。 我们还将构建另一个分类器

    2024年02月02日
    浏览(13)
  • 【机器学习实战】-基于概率论的分类方法:朴素贝叶斯

    【机器学习实战】-基于概率论的分类方法:朴素贝叶斯

    【机器学习实战】读书笔记 **朴素贝叶斯:**称为“ 朴素 ”的原因,整个形式化过程只做最原始、最简单的假设,特征之间没有关联,是统计意义上的独立。 **优点:**在数据较少的情况下仍然有效,可以处理多类别问题。 **缺点:**对于输入数据的准备方式较为敏感。 **适

    2024年03月25日
    浏览(14)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包