决策数题目(是否适合打网球)简单学习-手算

题目:

大致结果手绘图:

详细计算过程:

一级筛选:

一级筛选
1.天气
from math import*
sum = -(9/14) * log(9/14,2) - (5/14) * log(5/14,2)
a =  5/14*(-(2/5) * log(2/5,2) - (3/5) * log(3/5,2))#晴
b =  4/14*(-1 * log(1,2))#阴
c =  5/14*(-(3/5) * log(3/5,2) - (2/5) * log(2/5,2))#雨
sum1 = a + b + c
print(sum - sum1)
结果
#0.2467498197744391

2.温度
from math import*
sum = -(9/14) * log(9/14,2) - (5/14) * log(5/14,2)
a =  4/14*(-(1/2) * log(1/2,2) - (1/2) * log(1/2,2))#热
b =  6/14*(-(2/3) * log(2/3,2) - (2/3) * log(2/3,2))#温
c =  4/14*(-(3/4) * log(3/4,2) - (1/4) * log(1/4,2))#凉爽
sum1 = a + b + c
print(sum - sum1)
结果
#0.08851363698450365

3.湿度
from math import*
sum = -(9/14) * log(9/14,2) - (5/14) * log(5/14,2)
a =  7/14*(-(3/7) * log(3/7,2) - (4/7) * log(4/7,2))#高
b =  7/14*(-(6/7) * log(6/7,2) - (1/7) * log(1/7,2))#中

sum1 = a + b
print(sum - sum1)
结果
#0.15183550136234136

4.是否有风
from math import*
sum = -(9/14) * log(9/14,2) - (5/14) * log(5/14,2)
a =  6/14*(-(3/6) * log(3/6,2) - (3/6) * log(3/6,2))#是
b =  8/14*(-(6/8) * log(6/8,2) - (2/8) * log(2/8,2))#否

sum1 = a + b
print(sum - sum1)
结果
#0.04812703040826927

所以一级筛选选择天气

二级筛选:

2.1晴
2.1.1温度
from math import*
sum = -(2/5) * log(2/5,2) - (3/5) * log(3/5,2)
a =  2/5*(-(1/2) * log(1/2,2) - (1/2) * log(1/2,2))#温
#热和凉爽都为0
sum1 = a
print(sum - sum1)
结果
#0.5709505944546686

2.1.2湿度
由于中和高都为0,所以信息增益最大

2.1.3是否有风
from math import*
sum = -(2/5) * log(2/5,2) - (3/5) * log(3/5,2)
a =  2/5*(-(1/2) * log(1/2,2) - (1/2) * log(1/2,2))#是
b =  3/5*(-(1/3) * log(1/3,2) - (2/3) * log(2/3,2))#否
sum1 = a + b
print(sum - sum1)
结果
#0.01997309402197489

所以在二级筛选中晴天时选择湿度

2.2阴————全部适合

2.3雨
2.3.1温度
from math import*
sum = -(2/5) * log(2/5,2) - (3/5) * log(3/5,2)
a =  2/5*(-(1/2) * log(1/2,2) - (1/2) * log(1/2,2))#凉爽
b =  3/5*(-(1/3) * log(1/3,2) - (2/3) * log(2/3,2))#温
#热为0
sum1 = a + b
print(sum - sum1)
结果
#0.01997309402197489

2.3.2湿度
from math import*
sum = -(2/5) * log(2/5,2) - (3/5) * log(3/5,2)
a =  2/5*(-(1/2) * log(1/2,2) - (1/2) * log(1/2,2))#高
b =  3/5*(-(1/3) * log(1/3,2) - (2/3) * log(2/3,2))#中
sum1 = a + b
print(sum - sum1)
结果
#0.01997309402197489

2.3.3是否有风
由于有风和无风都为0,所以信息增益最大

所以在二级筛选中晴天时选择是否有风

关于手算有不懂的的地方可以问我~

(争取早点弄出程序,手算费脑子。。。)

原文地址:https://www.cnblogs.com/zhying99/p/10582166.html

时间: 2024-08-04 21:43:32

决策数题目(是否适合打网球)简单学习-手算的相关文章

log4j2的简单学习

log4j2的简单学习: package com.book.web.controller; import org.slf4j.Logger; import org.slf4j.LoggerFactory; //import org.apache.commons.logging.Log; //import org.apache.commons.logging.LogFactory; //import org.apache.logging.log4j.LogManager; //import org

varnish简单学习

操作系统:redhat5.5 前端服务器:varnish cache 2.1.5 监听端口8080 后端服务器:tengine 1.4.6 监听端口80 接着,建立varnish用户以及用户组,并且创建Varnish缓存目录和日志目录:[[email protected] ~]#useradd  -s /sbin/nologin varnish[[email protected] ~]#mkdir /data/varnish/cache[[email protected] ~]#mkdir /d

适合初学者的PHP学习路线及建议

为了让各位PHP初学者可以更好地学习PHP,今天就给大家分享一些PHP的学习路线,很适合PHP初学者的学习线路和建议.文章具体如下: 我们要有一个循序渐进的学习过程,这里先把学习PHP的过程做一下概括,这和很多学习PHP的爱好者是不谋而合的: (1) 熟悉HTML/CSS/JS..网页基本元素,完成阶段可自行制作简单的网页,对元素属性相对熟悉 (2) 理解动态语言的概念和运做机制,熟悉基本的PHP语法 (3) 学习如何将PHP与HTML结合起来,完成简单的动态页面 (4) 接触学习MySQL,开

高内聚低耦合简单学习

起因:模块独立性指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口简单, 两个定性的度量标准――耦合性和内聚性. 耦合性也称块间联系.指软件系统结构中各模块间相互联系紧密程度的一种度量.模块之间联系越 紧密,其耦合性就越强,模块的独立性则越差.模块间耦合高低取决于模块间接口的复杂性.调用的方 式及传递的信息.   耦合性分类(低――高): 无直接耦合;数据耦合;标记耦合;控制耦合;公共耦合;内容耦合; 1 无直接耦合: 2 数据耦合: 指两个模块之间有调用关系,传递的是简单的数

Log4j简单学习笔记

log4j结构图: 结构图展现出了log4j的主结构.logger:表示记录器,即数据来源:appender:输出源,即输出方式(如:控制台.文件...)layout:输出布局 Logger机滤器:常用级别的划分:Debug,Info,Warn,Error,Fatal这5个级别由低到高,如果配置的级别为"INFO"那么"Debug"级别的信息则不会显示"依次类推. 示例代码: @Test public void testLevel() { log.debu

线程简单学习2

一.理解多线程 多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相独立.线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较进程简单. 多个线程的执行是并发的,也就是在逻辑上"同时",而不管是否是物理上的"同时".如果系统只有一个CPU,那么真正的"同时"是不可能的.多线程和传统的单线程

memcached简单学习

分布式缓存出于如下考虑,首先是缓存本身的水平线性扩展问题,其次是缓存大并发下的本身的性能问题,再次避免缓存的单点故障问题(多副本和副本一致性).分布式缓存的核心技术包括首先是内存本身的管理问题,包括了内存的分配,管理和回收机制.其次是分布式管理和分布式算法,其次是缓存键值管理和路由. 原文:http://wenku.baidu.com/view/8686d46c7e21af45b307a8c3.html 什么是Memcached 许多Web 应用程序都将数据保存到RDBMS中,应用服务器从中读取

SQL Server中的锁的简单学习

原文:SQL Server中的锁的简单学习 简介 在SQL Server中,每一个查询都会找到最短路径实现自己的目标.如果数据库只接受一个连接一次只执行一个查询.那么查询当然是要多快好省的完成工作.但对于大多数数据库来说是需要同时处理多个查询的.这些查询并不会像绅士那样排队等待执行,而是会找最短的路径执行.因此,就像十字路口需要一个红绿灯那样,SQL Server也需要一个红绿灯来告诉查询:什么时候走,什么时候不可以走.这个红绿灯就是锁. 图1.查询可不会像绅士们那样按照次序进行排队 为什么需要

JAVA学习Swing章节流布局管理器简单学习

package com.swing; import java.awt.Container; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.WindowConstants; /** * 1:流(FlowLayout)布局管理器是布局管理器中最基本的布局管理器,流布局管理器在整个容器中 * 的布局正如其名,像流一样从左到右摆放组件,直到占据了这