小编Sea*_*ett的帖子

使用Python线程通过速率限制对速度缓慢的API进行数千次调用

我想要对API进行数千次调用,这种调用有点慢 - 几秒钟才能得到响应.唯一的限制是我每秒最多可以提出一个请求.最好的方法是什么?我认为以下代码有效,但我觉得我应该能够以某种方式更好地利用线程库.我正在使用python 3.3

last_job = datetime.now()
for work in work_list:
    while (datetime.now()-last_job).total_seconds() < 1 or threading.active_count() >= max_threads:
        time.sleep(.1)
    threading.Thread(target=work_function, args=[work]).start()
    last_job = datetime.now()
Run Code Online (Sandbox Code Playgroud)

python multithreading synchronization python-3.x

9
推荐指数
1
解决办法
3903
查看次数

scikit-learn SGDClassifier热启动被忽略了

我正在尝试使用scikit-learn 0.15.1版本的SGDClassifier.除了迭代次数之外,似乎没有任何方法可以设置收敛标准.所以我想通过检查每次迭代时的错误,然后热启动额外的迭代直到改进足够小来手动完成.

不幸的是,warm_start标志和coef_init/intercept_init似乎都没有真正热启动优化 - 它们似乎都从头开始.

我该怎么办?如果没有真正的收敛标准或热启动,则分类器不可用.

请注意下面每次重启时偏差如何增加很多,以及损失如何增加但随着进一步的迭代而下降.经过250次迭代后,偏差为-3.44,平均损失为1.46.

sgd = SGDClassifier(loss='log', alpha=alpha, verbose=1, shuffle=True, 
                    warm_start=True)
print('INITIAL FIT')
sgd.fit(X, y, sample_weight=sample_weight)
sgd.n_iter = 1
print('\nONE MORE ITERATION')
sgd.fit(X, y, sample_weight=sample_weight)
sgd.n_iter = 3
print('\nTHREE MORE ITERATIONS')
sgd.fit(X, y, sample_weight=sample_weight)


INITIAL FIT
-- Epoch 1
Norm: 254.11, NNZs: 92299, Bias: -5.239955, T: 122956, Avg. loss: 28.103236
Total training time: 0.04 seconds.
-- Epoch 2
Norm: 138.81, NNZs: 92598, Bias: -5.180938, T: 245912, Avg. loss: 16.420537
Total training time: 0.08 seconds.
-- Epoch 3 …
Run Code Online (Sandbox Code Playgroud)

python machine-learning scikit-learn

3
推荐指数
1
解决办法
1948
查看次数