小编Jef*_*vis的帖子

从大型CSV文件中快速提取行块

我有一个大型的CSV文件,其中包含与库存相关的数据,格式如下:

股票代码,日期,[一些变量......]

因此,每一行都以符号开头(如"AMZN"),然后有日期,然后在所选日期有12个与价格或数量相关的变量.这个文件中有大约10,000种不同的证券,我每天都有一条线,每条股票都是公开交易的.该文件首先按字母顺序按股票代码排序,按时间顺序按日期排序.整个文件大约是3.3 GB.

我想要解决的任务类型是能够针对当前日期提取给定股票代码符号的最新n行数据.我有代码执行此操作,但根据我的观察,平均每次检索需要大约8-10秒(所有测试都提取了100行).

我有我想要运行的功能,需要我抓住数百或数千个符号的这些块,我真的想减少时间.我的代码效率低下,但我不确定如何让它运行得更快.

首先,我有一个名为getData的函数:

def getData(symbol, filename):
  out = ["Symbol","Date","Open","High","Low","Close","Volume","Dividend",
         "Split","Adj_Open","Adj_High","Adj_Low","Adj_Close","Adj_Volume"]
  l = len(symbol)
  beforeMatch = True
  with open(filename, 'r') as f:
    for line in f:
        match = checkMatch(symbol, l, line)
        if beforeMatch and match:
            beforeMatch = False
            out.append(formatLineData(line[:-1].split(",")))
        elif not beforeMatch and match:
            out.append(formatLineData(line[:-1].split(",")))
        elif not beforeMatch and not match:
            break
  return out
Run Code Online (Sandbox Code Playgroud)

(这段代码有几个辅助函数,checkMatch和formatLineData,我将在下面展示.)然后,还有另一个名为getDataColumn的函数,它使用正确的天数来获取我想要的列:

def getDataColumn(symbol, col=12, numDays=100, changeRateTransform=False):
  dataset = getData(symbol)
  if not changeRateTransform:
    column = [day[col] for day in dataset[-numDays:]]
  else:
    n …
Run Code Online (Sandbox Code Playgroud)

python csv performance

6
推荐指数
1
解决办法
778
查看次数

多臂强盗演习的反直觉结果

我正在阅读 Sutton & Barto 的Reinforcement Learning: An Introduction 的第 2 章第 7 节,其中涉及多臂老虎机问题中的梯度方法。(我意识到第 2 版是草稿,似乎各节移动了一点,但我的文件有 2.7 节标题为“梯度强盗”。)我设法使用 2.3-2.5 节中的方法没有问题,但我一直使用令人费解的梯度方法获得结果。我将遍历我的代码并展示一个示例。

只是在这里初始化一切:

import random
import math
import numpy as np, numpy.random

# number of arms (k) and step-size (alpha)
k = 10
alpha = 0.1

# initialize preference function (H), and reward distribution (R)
H = {i: 0 for i in range(k)}
R = {i: [random.uniform(-100,100), 1] for i in range(k)}
Run Code Online (Sandbox Code Playgroud)

我使用固定奖励分布,我使用字典来表示这些分布。我假设每个奖励都由高斯描述,因此我使用以下函数将操作映射到奖励:

def getReward(action, rewardDistribution):
  return random.gauss(rewardDistribution[action][0], rewardDistribution[action][1])
Run Code Online (Sandbox Code Playgroud)

所谓的“偏好函数” H …

python machine-learning reinforcement-learning gradient-descent

2
推荐指数
1
解决办法
738
查看次数

在表达式结尾处用括号写的变量

我正在阅读CNTK教程,我有以下功能:

def create_model(features):
with C.layers.default_options(init=C.layers.glorot_uniform(),
                              activation=C.ops.relu):
    h = features
    for _ in range(num_hidden_layers):
        h = C.layers.Dense(hidden_layers_dim)(h)
    r = C.layers.Dense(num_output_classes, activation=None)(h)
    return r
Run Code Online (Sandbox Code Playgroud)

函数本身不是我的困惑点,我实际上关注return语句前两行的语法:h = C.layers.Dense(hidden_layers_dim)(h)r = C.layers.Dense(num_output_classes, activation=None)(h).

这是什么东西(h)写在行尾?这个语法叫什么,它做了什么?我试着查一下,但我甚至不知道在搜索中该怎么称呼它.

python

0
推荐指数
1
解决办法
83
查看次数