热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

NLPEM算法教材抛硬币

自然语言处理中EM算法抛硬币的实现:importnumpyimportmathdefem_single(theta,O):#对于当前的模型求对应的期望值(估算步

自然语言处理中EM算法抛硬币的实现:

import numpy
import math
def em_single(theta,O):#对于当前的模型求对应的期望值(估算步骤)
# 三个值分别为选择硬币c1的概率、抛c1硬币为正面的概率、抛c2硬币为正面的概率。pi&#61;theta[0]h1&#61;theta[1]h2&#61;theta[2]new_pi&#61;0new_h1&#61;0new_h2&#61;0PB&#61;[]head&#61;[]for o in O:t&#61;len(o)cnt &#61; o.sum()#正面的数量head.append(cnt)#head&#61;[3.0,3,0]for o in O:t&#61;len(o)heads &#61; o.sum()#正面的数量tails&#61;t-heads#反面的数量u&#61;(pi*math.pow(h1,heads)*math.pow(1-h1,tails))/(pi*math.pow(h1,heads)*math.pow(1-h1,tails)&#43;(1-pi)*math.pow(h2,heads)*math.pow(1-h2,tails))PB.append(u)l&#61;len(PB)new_pi&#61;sum(PB)/lfor i in range(l):new_h1&#43;&#61;PB[i]*head[i]/tnew_h2&#43;&#61;(1-PB[i])*head[i]/tnew_h1&#61;new_h1/sum(PB)new_h2&#61;new_h2/(l-sum(PB))#因为有c1 c2两种可能&#xff0c;总观测数减去c1的即为c2的return [new_pi,new_h1,new_h2]def em(theta,Y,tol):#最大化步骤j&#61;0while j<1000:new_theta&#61;em_single(theta,Y)change&#61;numpy.abs(new_theta[0] - theta[0])if change,,,}[0,0,0],[1,1,1],[0,0,0]])theta&#61;[0.3,0.3,0.6]t&#61;len(theta)print("初始参数为:")print(theta)theta&#61;em(theta,O,1e-15)

输出&#xff1a;

初始参数为:
[0.3, 0.3, 0.6]
迭代后的参数为:
[0.3737649610410474, 0.0680206318504191, 0.7578245253976398]
迭代后的参数为:
[0.4859367224237726, 0.0004438948678989641, 0.9722232981496766]
迭代后的参数为:
[0.49998864947922056, 8.997364138533166e-11, 0.9999772993837971]
迭代后的参数为:
[0.49999999999999417, 7.2837620757937955e-31, 0.9999999999999885]
迭代后的参数为:
[0.5, 3.864268131526994e-91, 1.0]

 


推荐阅读
  • Python多线程编程技巧与实战应用详解 ... [详细]
  • 本文探讨了一种高效的算法,用于生成所有数字(0-9)的六位组合,允许重复使用数字,并确保这些组合的和等于给定的整数N。该算法通过优化搜索策略,显著提高了计算效率,适用于大规模数据处理和组合优化问题。 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • 每年,意甲、德甲、英超和西甲等各大足球联赛的赛程表都是球迷们关注的焦点。本文通过 Python 编程实现了一种生成赛程表的方法,该方法基于蛇形环算法。具体而言,将所有球队排列成两列的环形结构,左侧球队对阵右侧球队,首支队伍固定不动,其余队伍按顺时针方向循环移动,从而确保每场比赛不重复。此算法不仅高效,而且易于实现,为赛程安排提供了可靠的解决方案。 ... [详细]
  • Python进阶笔记:深入理解装饰器、生成器与迭代器的应用
    本文深入探讨了Python中的装饰器、生成器和迭代器的应用。装饰器本质上是一个函数,用于在不修改原函数代码和调用方式的前提下为其添加额外功能。实现装饰器需要掌握闭包、高阶函数等基础知识。生成器通过 `yield` 语句提供了一种高效生成和处理大量数据的方法,而迭代器则是一种可以逐个访问集合中元素的对象。文章详细解析了这些概念的原理和实际应用案例,帮助读者更好地理解和使用这些高级特性。 ... [详细]
  • 本文提出了一种基于栈结构的高效四则运算表达式求值方法。该方法能够处理包含加、减、乘、除运算符以及十进制整数和小括号的算术表达式。通过定义和实现栈的基本操作,如入栈、出栈和判空等,算法能够准确地解析并计算输入的表达式,最终输出其计算结果。此方法不仅提高了计算效率,还增强了对复杂表达式的处理能力。 ... [详细]
  • 探讨 OpenCV 和 Matlab 在最小二乘法直线拟合中的结果差异及原因分析
    在使用最小二乘法进行直线拟合时,OpenCV和Matlab的计算结果存在显著差异。通过详细分析发现,这种不一致性可能源于两种软件在算法实现、数据处理方式以及数值稳定性上的不同。进一步研究还表明,输入数据的格式和预处理步骤也可能对最终结果产生影响。为了确保结果的一致性和准确性,建议在实际应用中对这两种工具的输出进行对比验证,并选择最适合具体应用场景的方法。 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
  • 在C语言程序开发中,调试和错误分析是确保代码正确性和效率的关键步骤。本文通过一个简单的递归函数示例,详细介绍了如何编写和调试C语言程序。具体而言,我们将创建一个名为 `factorial.c` 的文件,实现计算阶乘的功能,并通过逐步调试来分析和解决可能出现的错误。此外,文章还探讨了常见的调试工具和技术,如GDB和断点设置,以帮助开发者高效地定位和修复问题。 ... [详细]
  • 在2019年寒假强化训练中,我们深入探讨了二分算法的理论与实践应用。问题A聚焦于使用递归方法实现二分查找。具体而言,给定一个已按升序排列且无重复元素的数组,用户需从键盘输入一个数值X,通过二分查找法判断该数值是否存在于数组中。输入的第一行为一个正整数,表示数组的长度。这一训练不仅强化了对递归算法的理解,还提升了实际编程能力。 ... [详细]
  • 开发日志:201521044091 《Java编程基础》第11周学习心得与总结
    开发日志:201521044091 《Java编程基础》第11周学习心得与总结 ... [详细]
  • Python全局解释器锁(GIL)机制详解
    在Python中,线程是操作系统级别的原生线程。为了确保多线程环境下的内存安全,Python虚拟机引入了全局解释器锁(Global Interpreter Lock,简称GIL)。GIL是一种互斥锁,用于保护对解释器状态的访问,防止多个线程同时执行字节码。尽管GIL有助于简化内存管理,但它也限制了多核处理器上多线程程序的并行性能。本文将深入探讨GIL的工作原理及其对Python多线程编程的影响。 ... [详细]
  • 如何在多类别分类模型中精确提取混淆矩阵中的假阳性(FP)和假阴性(FN)指标是评估模型性能的关键步骤。本文详细探讨了混淆矩阵的结构及其在多类别分类任务中的应用,提供了有效的方法来识别和计算这些重要指标,以帮助研究人员和实践者更好地理解模型的误分类情况。 ... [详细]
  • 在本文中,我们将为 HelloWorld 项目添加视图组件,以确保控制器返回的视图路径能够正确映射到指定页面。这一步骤将为后续的测试和开发奠定基础。首先,我们将介绍如何配置视图解析器,以便 SpringMVC 能够识别并渲染相应的视图文件。 ... [详细]
  • AIX编程挑战赛:AIX正方形问题的算法解析与Java代码实现
    在昨晚的阅读中,我注意到了CSDN博主西部阿呆-小草屋发表的一篇文章《AIX程序设计大赛——AIX正方形问题》。该文详细阐述了AIX正方形问题的背景,并提供了一种基于Java语言的解决方案。本文将深入解析这一算法的核心思想,并展示具体的Java代码实现,旨在为参赛者和编程爱好者提供有价值的参考。 ... [详细]
author-avatar
tony2502877947
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有