PyThreadState_Get:使用sklearn

时间:2018-06-20 20:44:21

标签: python scikit-learn

我正在尝试使用sklearn.metrics循环计算多条(〜3000)roc曲线,并将结果添加到列表中。

基本上,代码看起来像这样:

from sklearn import metrics

results = []

for y_test in dataset:

    fpr, tpr, thresholds = metrics.roc_curve(y, y_test, pos_label=1)

    results.append([fpr, tpr, thresholds])

工作正常,但是经过大约2k次迭代后,我得到PyThreadState_Get:没有当前线程指向sklearn文件:

    Fatal Python error: PyThreadState_Get: no current thread

Current thread 0x000017a4 (most recent call first):
  File "C:\Users\user\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\metrics\ranking.py", line 356 in _binary_clf_curve
  File "C:\Users\user\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\metrics\ranking.py", line 534 in roc_curve

我怀疑这是内存问题,但是我无法通过简单地释放更多的RAM来解决它,Windows资源监视器也不显示在错误期间使用了所有内存。 也许以前有人遇到过这样的问题?

我正在Windows 7(64位)上使用Python 3

2 个答案:

答案 0 :(得分:0)

据我所知,此实现仅限于二进制分类任务。

答案 1 :(得分:0)

我遇到了同样的问题,问题出在我传递给roc_curve函数的数据点上。关于数据一定有些怪异。因此,尝试解决数据点问题应该可以解决此问题。