算法分析

不分析如何实现 environment

def build_q_table(n_states, actions)

def build_q_table(n_states, actions):

table = pd.DataFrame(

np.zeros((n_states, len(actions))), # q_table initial values

columns=actions, # actions's name

)

# print(table) # show table

return table

pd.DataFrame()

np.zeros(a,b)

在下方版块有整理

此函数用于构建n行,len(actions)列的Q-table,算是典型的表格型方法

def choose_action(state, q_table)

def choose_action(state, q_table):

# This is how to choose an action

state_actions = q_table.iloc[state, :]

if (np.random.uniform() > EPSILON) or ((state_actions == 0).all()): # act non-greedy or state-action have no value

action_name = np.random.choice(ACTIONS)

else: # act greedy

action_name = state_actions.idxmax() # replace argmax to idxmax as argmax means a different function in newer version of pandas

return action_name

q_table.iloc()---------------------此处为输出当前S所对应的1*len(actions)的矩阵

np.random.uniform() ----------从0到1等概率随机取值为实现epslon贪心探索功能

(state_actions == 0).all()-----矩阵全为0也触发非贪心的随机策略

state_actions.idxmax()-------获取此状态下的最高q值所对应的action

def rl()

def rl():

# main part of RL loop

q_table = build_q_table(N_STATES, ACTIONS)

for episode in range(MAX_EPISODES):

step_counter = 0

S = 0

is_terminated = False

update_env(S, episode, step_counter)

while not is_terminated:

A = choose_action(S, q_table)

S_, R = get_env_feedback(S, A) # take action & get next state and reward

q_predict = q_table.loc[S, A]

if S_ != 'terminal':

q_target = R + GAMMA * q_table.iloc[S_, :].max() # next state is not terminal

else:

q_target = R # next state is terminal

is_terminated = True # terminate this episode

q_table.loc[S, A] += ALPHA * (q_target - q_predict) # update

S = S_ # move to next state

update_env(S, episode, step_counter+1)

step_counter += 1

return q_table

上述代码为下图伪代码的实现,基础思路为:

利用估值与现实值的偏差对于动作价值进行更新,类似于控制论中用偏差消除偏差的思路,最后逼近真实的动作价值。是一种TD(0)方法。

算法改进思路及疑问:

1.改变回报的表达形式,可以加入多步的视野

2.随时间降低epsilon,后期减少探索

3.疑问:此处表格型方法是否可以引入资格迹,使其变为后向试图

小贴士:

众所周知,Q-Learning相较Sarsa更为冒险,是因为Q-Learning唯利是图,Sarsa相对保守~

Python函数功能补漏

np.random.seed() 函数

seed( ) 用于指定随机数生成时所用算法开始的整数值。

1.如果使用相同的seed( )值,则每次生成的随即数都相同;

2.如果不设置这个值,则系统根据时间来自己选择这个值,此时每次生成的随机数因时间差异而不同。

3.设置的seed()值仅一次有效

np.zeros(a,b)函数

用法:zeros(shape, dtype=float,order=‘C’)

返回:返回来一个给定形状和类型的用0填充的数组;

参数:shape:形状 EX:(n,m) — n行m列

dtype:数据类型,可选参数,默认numpy.float64

pd.DataFrame()函数

pandas.DataFrame( data, index, columns, dtype, copy)

DataFrame是一种表格型数据结构,它含有一组有序的列,每列可以是不同的值。DataFrame既有行索引,也有列索引,它可以看作是由Series组成的字典,不过这些Series公用一个索引。

DataFrame的创建有多种方式,不过最重要的还是根据dict进行创建,以及读取csv或者txt文件来创建。这里主要介绍这两种方式

功能:创建一个DataFrame对象(带索引的表格)

data:表示要传入的数据 ,包括 ndarray,series,map,lists,dict,constant和另一个DataFrame

index: 行索引 (可初始化如:index=[‘one’,‘two’,‘three’,‘four’,‘five’])

columns: 列索引 (可初始化如:columns=[‘year’,‘state’,‘pop’,‘debt’])

dtype:每列的类型

copy: 查了api,才知道意思是从input输入中拷贝数据。默认是false,不拷贝

功能函数

函数

功能

df.axes

获取行及列索引

df.T

行与列对调

df. info()

打印DataFrame对象的信息

df.head(i)

显示前 i 行数据

df.tail(i)

显示后 i 行数据

df.describe()

查看数据按列的统计信息

根据字典创建

data = {

'state':['Ohio','Ohio','Ohio','Nevada','Nevada'],

'year':[2000,2001,2002,2001,2002],

'pop':[1.5,1.7,3.6,2.4,2.9]

}

frame = pd.DataFrame(data)

>frame

#输出

pop state year

0 1.5 Ohio 2000

1 1.7 Ohio 2001

2 3.6 Ohio 2002

3 2.4 Nevada 2001

4 2.9 Nevada 2002

q_table.iloc()函数

loc是基于label进行索引的

print(df1.loc[:,[‘a’, ‘b’]])(输出所有行,以及a、b列)

df1.loc[:,0:2]这么写报错, 因为loc索引的是label,显然在df1的列的名字中没有叫0,1和2的。

print(df1.iloc[:,0:2])而不可写为print(df1.iloc[:,[‘a’, ‘b’]])

np.random.uniform() 函数

numpy.random.uniform(low=0.0, high=1.0, size=None)

从[low, high])中均匀取值,没有任何参数的话,是从[0, 1)

官方文档

.all()函数

all() 函数用于判断给定的可迭代参数 iterable 中的所有元素是否都为 TRUE,如果是返回 True,否则返回 False。

元素除了是 0、空、None、False 外都算 True。

.idmax()函数

pandas Series 的 argmax 方法和 idxmax 方法用于获取 Series 的最大值的索引值

.format()函数

一个格式化字符串的方法

Advantages:

1.不需要理会数据类型的问题,在%方法中%s只能替代字符串类型

2.单个参数可以多次输出,参数顺序可以不相同

3.填充方式十分灵活,对齐方式十分强大

4.官方推荐用的方式,%方式将会在后面的版本被淘汰

Example:

print('hello {name1} i am {name2}'.format(name1='Kevin',name2='Tom'))

# hello Kevin i am Tom

可显示数据的数量、缺失值、最小最大数、平均值、分位数等信息 ↩︎

python代码阅读_莫烦Python RL 代码阅读一相关推荐

  1. 莫烦python系列教程_莫烦python教程学习笔记——总结篇

    一.机器学习算法分类: 监督学习:提供数据和数据分类标签.--分类.回归 非监督学习:只提供数据,不提供标签. 半监督学习 强化学习:尝试各种手段,自己去适应环境和规则.总结经验利用反馈,不断提高算法 ...

  2. 莫烦Python代码实践(一)——Q-Learning算法工程化解析

    提示:转载请注明出处,若本文无意侵犯到您的合法权益,请及时与作者联系. 莫烦Python代码实践(一)--Q-Learning算法工程化解析 声明 一.Q-Learning算法是什么? 二.Q-Lea ...

  3. 莫烦python教程部分代码

    GitHub资源整理 莫烦python教程部分代码 莫烦python教程部分代码 整理了一部分莫烦Python教程中的代码,并对代码进行了详细的注释.由于莫烦大佬在做TensorFlow教程时使用的0 ...

  4. 【莫烦Python】机器要说话 NLP 自然语言处理教程 W2V Transformer BERT Seq2Seq GPT 笔记

    [莫烦Python]机器要说话 NLP 自然语言处理教程 W2V Transformer BERT Seq2Seq GPT 笔记 教程与代码地址 P1 NLP行业大佬采访 P2 NLP简介 P3 1. ...

  5. 莫烦python教程下载_Python 有哪些好的学习资料或者博客?

    Python是一门语法非常简单的语言,学习Python不需要花大量时间去学习它的语法,过一遍就行,主要靠实践.先给大家分享一个免费的Python的编程课,有Python的视频课程+代码实践课+辅导答疑 ...

  6. 【莫烦Python】Python 基础教程——学习笔记

    文章目录 本笔记基于p1-p29[莫烦Python]Python 基础教程 大家可以根据代码内容和注释进行学习. 安装 我的:python3.8+anaconda+VS code print() pr ...

  7. CNN识别手写数字-莫烦python

    搭建一个 CNN识别手写数字 前面跟着莫烦python/tensorflow教程完成了神经网络识别手写数字的代码,这一part是cnn识别手写数字的 import tensorflow as tf f ...

  8. 【莫烦Python】Numpy教程

    目录 前言 1.numpy属性 2.numpy的array创建 3.numpy的基础运算 4.numpy的基础运算2 5.numpy的索引 6.numpy的array合并 7.numpy的array分 ...

  9. 【莫烦Python】Pandas教程

    目录 前言 1.Pandas vs Numpy 2.基本介绍 3.选择数据 4.设置值 5.处理丢失的数据 6.pandas导入导出 7.pandas合并concat 8.pandas合并merge ...

  10. 【莫烦Python】Matplotlib Python画图教程

    目录 前言 1.基本使用 1.1 基本用法 1.2 figure图像 1.3 设置坐标轴1 1.4 设置坐标轴2 1.5 Legend图例 1.6 Annotation标注 1.7 tick能见度 2 ...

最新文章

  1. PHP jquery瀑布流特效源码
  2. awakeFromNib方法和viewDidLoad方法区别
  3. exe的dll加载过程
  4. 钥匙计数之一(HDU-1483)
  5. html给table加外边框,如何给table添加边框
  6. python大数据基础学习环境变量_《Python大数据基础与实战》[56M]百度网盘pdf下载...
  7. python3实现灰度图的双三次插值算法缩放
  8. springboot 之 Starter
  9. iOS之Swift实现二维码扫描
  10. Squitd代理服务器安装
  11. Oracle 中递归查询
  12. 刀片服务器如何选择操作系统,刀片服务器如何选择操作系统?
  13. SQLServer系统函数之聚合函数
  14. 求组合数(完善中.......)
  15. 设计模式-day05
  16. 微信红包封面免费领取,自定义个性化红包封面
  17. 谷歌宣布设立100亿美元基金助力印度数字经济发展
  18. day01 计算机的基本知识
  19. 计算机二级python基本操作题(二)
  20. 奥的斯电梯服务器自动呼梯,eCall BLE

热门文章

  1. linux入门和简单应用举例
  2. 关于ibatis中sqlMap配置文件中使用到,的处理
  3. Freenas使用小结(一)安装
  4. VMware esxi在线增加Linux LVM硬盘不需重新启动
  5. 48V自动启停的Stateflow应用
  6. 2月10日 感知器+浅层神经网络+反向传播+tensorflow
  7. 一篇文章掌握MySQL事务的四大特性
  8. 交换局域网(链路层+以太网+交换机)
  9. ubuntu终止terminal中下载任务以及继续下载
  10. 梦幻之旅--深入大规模芯片设计全过程