文章目录


WhyNot是一个Python包,它提供了一个用于动态决策的实验沙箱,将因果推理和强化学习工具与具有挑战性的动态环境连接起来。
该软件包有助于开发、测试、基准测试和教学因果推理和顺序决策工具。

github: https://github.com/zykls/whynot
文档:https://whynot.readthedocs.io/en/latest/

下载:

pip install whynot

举一个例子 hiv_simulator.ipynb

%load_ext autoreload
%autoreload 2import whynot.gym as gym
import numpy as np
import matplotlib.pyplot as plt
import torchfrom scripts import utils
%matplotlib inline# HIV环境
# Make the HIV environment and set random seed.
env = gym.make('HIV-v0')
np.random.seed(1)
env.seed(1)
torch.manual_seed(1)# 策略
class NoTreatmentPolicy(utils.Policy):"""The policy of always no treatment."""def __init__(self):super(NoTreatmentPolicy, self).__init__(env)def sample_action(self, obs):return 0class MaxTreatmentPolicy(utils.Policy):"""The policy of always applying both RT inhibitor and protease inhibitor."""def __init__(self):super(MaxTreatmentPolicy, self).__init__(env)def sample_action(self, obs):return 3class RandomPolicy(utils.Policy):"""The policy of picking a random action at each time step."""def __init__(self):super(RandomPolicy, self).__init__(env)def sample_action(self, obs):return np.random.randint(4)# 模拟
learned_policy = utils.run_training_loop(env=env, n_iter=300, max_episode_length=100, batch_size=1000, learning_rate=1e-3)

几种策略,我们定义了一个基本的Policy类。每个策略都有一个sample_action函数,它接受一个观察并返回一个操作,一共四类:

  • NNPolicy
    一种1层前馈神经网络,以状态维为输入维,一个包含8个神经元的隐藏层(状态维度为6),以动作作为输出维度。我们使用批处理归一化和ReLU激活。
  • 没有任何刺激策略
    任何调整都不要,属于最基本的
  • 刺激最大策略
    任何调整都需要,属于过分敏感
  • 随机的政策
    采取随机行动而不考虑观察结果。
# 其他三个策略
policies = {"learned_policy": learned_policy,"no_treatment": NoTreatmentPolicy(),"max_treatment": MaxTreatmentPolicy(),"random": RandomPolicy(),
}
utils.plot_sample_trajectory(env, policies, 100, wn.hiv.State.variable_names())

跟着开源项目学因果推断——whynot(十四)相关推荐

  1. 跟着开源项目学因果推断——FixedEffectModel 固定效应模型(十七)

    这个开源项目来源于快手,当然对于快手的开源项目是有前车之鉴的[生存分析--快手的基于深度学习框架的集成⽣存分析软件KwaiSurvival(一)].KwaiSurvival让我觉得是实验代码,今天要接 ...

  2. 跟着开源项目学因果推断——mr_uplift(十五)

    文章目录 1 mr_uplift 介绍 1.1 介绍 1.2 ERUPT 准则 2 案例模拟 2.1 生成模拟数据 2.2 绘制ERUPT Curves曲线 2.3 为新的观测结果分配最佳处理方法 2 ...

  3. 跟着开源项目学因果推断——causalnex(十三)

    文章目录 1 causalnex 介绍 1.1 安装 2 使用的模型 2.1 NOTEARS的结构方程模型 3 建模案例:NOTEARS结构方程模型 3.1 数据加载 3.2 建模 & 错误指 ...

  4. 跟着google工程师学Go语言(二十四):单任务版爬虫

    欢迎来到:Google资深工程师深度讲解Go语言 视频地址:Google资深工程师深度讲解Go语言-单任务版爬虫 获取城市名称和链接: CSS选择器 浏览器,console: $('#cityList ...

  5. 汇编语言mul指令_跟着开源软件学汇编语言:计算器

    今天我们分享两个关于计算器的开源软件,这两个开源软件都是用汇编语言编写,学习这两个软件有助于我们理解相关的指令和数据转换的方法. rdebug的计算器 第一个开源软件来自rdebug的博客:https ...

  6. 【动手学因果推断】(二):潜在因果框架

    [动手学因果推断](二):潜在因果框架

  7. 从开源项目学做微信小程序

    1. 项目名称:灵动电商之微信小程序端 项目地址:黄秀杰/lendoo-wx - 码云 2. 项目名称:高仿网易 B2C 商城 项目简介:本项目是基于 Node.js + MySQL 开发的高仿网易严 ...

  8. 计算与推断思维 十四、回归的推断

    十四.回归的推断 原文:Inference for Regression 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 到目前为止,我们对变量之间关系的分析纯粹是描述性的.我们 ...

  9. 开源项目SMSS发开指南(四)——SSL/TLS加密通信详解

    本文将详细介绍如何在Java端.C++端和NodeJs端实现基于SSL/TLS的加密通信,重点分析Java端利用SocketChannel和SSLEngine从握手到数据发送/接收的完整过程.本文也涵 ...

最新文章

  1. 60个开发者不容错过的免费资源库
  2. a*算法matlab代码_蚁群算法(含MATLAB代码)
  3. 数据结构实验之排序七:选课名单(卡内存的一道题。。坑)
  4. Python机器学习:KNN算法07数据归一化
  5. Android---真机调试时不能识别手机的解决方案
  6. stream常用操作
  7. android 下载 文件怎么打开方式,apk文件怎么打开?
  8. 工具篇之Chrome浏览器所有页面崩溃(包括设置页面)的处理方法
  9. 利用scrapy爬取新浪体育新闻的小例子
  10. 如何将页脚(footer)保持在页面底部
  11. python自然语言处理实战源代码下载_NLP学习:涂铭《Python自然语言处理实战核心技术与算法》PDF+源代码...
  12. ConcurrentHashMap原理,在JKD7和JDK8版本的区别
  13. java poi写入excel_Java使用POI读取和写入Excel指南
  14. oracle添加序列
  15. 深度学习入门笔记(十一):权重初始化
  16. 雷达图 自定义点样式 渐变背景色
  17. 怎么利用计算机出数学卷子,怎样在电脑中编写数学试卷?
  18. JavaSE基础(79) BigInteger(能够存取比Long更大的整数,可以任意大小)
  19. DOS之特殊符号讲解
  20. R语言和Python连接hive

热门文章

  1. 配置iSCSI部署网络存储
  2. mybatis-注解及其他
  3. jQuery操作DOM对象
  4. ANDROID模拟器访问本地WEB应用10.0.2.2
  5. (数据挖掘-入门-2)相似度衡量的方法
  6. C常见错误小记(未完)
  7. linux日常笔记4
  8. VUE 相关问题积累
  9. Exploit Kit攻击工具包流量锐减96%!这段时间究竟发生了什么?
  10. 简单几行代码申请权限