小编mac*_*rus的帖子

在拟合Sklearn模型时,"设备上没有剩余空间"错误

我正在使用scikit-learn为LDA模型提供大量数据.相关代码片段如下所示:

lda = LatentDirichletAllocation(n_topics = n_topics, 
                                max_iter = iters,
                                learning_method = 'online',
                                learning_offset = offset,
                                random_state = 0,
                                evaluate_every = 5,
                                n_jobs = 3,
                                verbose = 0)
lda.fit(X)
Run Code Online (Sandbox Code Playgroud)

(我想这里唯一可能相关的细节是我正在使用多个工作.)

经过一段时间后,即使磁盘上有足够的空间和足够的可用内存,我也会收到"设备上没有剩余空间"错误.我在两台不同的计算机上(在我的本地计算机和远程服务器上)多次尝试相同的代码,首先使用python3,然后使用python2,每次我都得到相同的错误.

如果我在较小的数据样本上运行相同的代码,一切正常.

整个堆栈跟踪:

Failed to save <type 'numpy.ndarray'> to .npy file:
Traceback (most recent call last):
  File "/home/ubuntu/anaconda2/lib/python2.7/site-packages/sklearn/externals/joblib/numpy_pickle.py", line 271, in save
    obj, filename = self._write_array(obj, filename)
  File "/home/ubuntu/anaconda2/lib/python2.7/site-packages/sklearn/externals/joblib/numpy_pickle.py", line 231, in _write_array
    self.np.save(filename, array)
  File "/home/ubuntu/anaconda2/lib/python2.7/site-packages/numpy/lib/npyio.py", line 491, in save
    pickle_kwargs=pickle_kwargs)
  File "/home/ubuntu/anaconda2/lib/python2.7/site-packages/numpy/lib/format.py", line 584, in write_array
    array.tofile(fp)
IOError: 275500 …
Run Code Online (Sandbox Code Playgroud)

python multithreading ioerror scikit-learn

19
推荐指数
2
解决办法
6981
查看次数

使用Optim.jl在Julia中进行逻辑回归

我正在尝试在Julia中实现一个简单的正则化逻辑回归算法.我想使用Optim.jl库来最小化我的成本函数,但我无法让它工作.

我的成本函数和梯度如下:

function cost(X, y, theta, lambda)
    m = length(y)
    h = sigmoid(X * theta)
    reg = (lambda / (2*m)) * sum(theta[2:end].^2)
    J = (1/m) * sum( (-y).*log(h) - (1-y).*log(1-h) ) + reg
    return J
end

function grad(X, y, theta, lambda, gradient)
    m = length(y)
    h = sigmoid(X * theta)
    # gradient = zeros(size(theta))
    gradient = (1/m) * X' * (h - y)
    gradient[2:end] = gradient[2:end] + (lambda/m) * theta[2:end]
    return gradient
end
Run Code Online (Sandbox Code Playgroud)

(theta假设函数的参数向量在哪里,lambda是正则化参数.)

然后,根据这里给出的说明:https …

regression mathematical-optimization julia

5
推荐指数
2
解决办法
1332
查看次数

用自定义标志符号替换<hr>行

我想将<hr>标签默认呈现的水平线替换为三个星号(水平居中).如果可能的话,我想用纯CSS实现这一点,具体来说:

  • 我不想触摸我的标记,应该只是简单<hr>,没有帮助div或类似的东西(因为我是造型Markdown文件);
  • 没有背景图片;
  • 没有Javascript.

首先我试过:

hr {
    width: 0;
}

hr:before {
    content: "***";
}
Run Code Online (Sandbox Code Playgroud)

几乎可以解决问题,但我希望它集中在一起,并且不知道如何将它居中.

css markdown typography pseudo-element

4
推荐指数
1
解决办法
223
查看次数

将float指定为字典键会改变其精度(Python)

我有一个浮动列表(实际上它是一个pandas Series对象,如果它改变了什么),它看起来像这样:

mySeries:

...
22      16.0
23      14.0
24      12.0
25      10.0
26       3.1
...
Run Code Online (Sandbox Code Playgroud)

(因此,本系列的元素位于右侧,左侧是索引.)然后,我尝试将此系列中的元素指定为字典中的键,将索引指定为值,如下所示:

{ mySeries[i]: i for i in mySeries.index }
Run Code Online (Sandbox Code Playgroud)

而且我得到了我想要的东西,除了......

{ 6400.0: 0, 66.0: 13, 3.1000000000000001: 23, 133.0: 10, ... }
Run Code Online (Sandbox Code Playgroud)

为什么3.1突然变成了3.1000000000000001?我想这与浮点数的表示方式有关(?),但为什么现在会发生,我该如何避免/修复呢?

编辑:如果这个问题不准确,请随时为这个问题建议一个更好的标题.

编辑2:好的,所以它似乎是完全相同的数字,只是印刷方式不同.仍然,如果我指定mySeries[26]为字典键,然后我尝试运行:

myDict[mySeries[26]]
Run Code Online (Sandbox Code Playgroud)

我得到KeyError.什么是避免它的最佳方法?

python floating-point dictionary pandas

4
推荐指数
2
解决办法
2087
查看次数