python - 使用 sklearn 内部函数

标签 python scikit-learn

我在日常 MVA 业务中使用 scikit-learn 库。我使用的函数之一是 roc_curve() 方法来获取我的 ROC 曲线。该函数返回假阳性率和真阳性率。在我的领域 (HEP),我们更喜欢高效工作,即我想将真阳性的数量标准化为阳性总数。

为了得到我需要的东西,我想在 sklearn.metric.rankings 中重新使用 _binary_clf_curve() 函数,即

def roc_curve_eff(y_true, y_score, pos_label=None, sample_weight=None) :
    fps, tps, _ = _binary_clf_curve(
        y_true, y_score, pos_label=pos_label, sample_weight=sample_weight)

    teff = tps / (tps[-1] - tps)
    feff = fps / (fps[-1] - fps)

    return feff, teff, _

并将其加载到我调用的本地 namespace 中 从 sklearn.metrics.rankings 导入 _binary_clf_curve 。

这样做他会给我以下错误:

ImportError                               
Traceback (most recent call last)
<ipython-input-10-d1d6b7292e7f> in <module>()
 11 from root_numpy import root2array, rec2array
 12 from sklearn.metrics import roc_curve, auc
---> 13 from sklearn.metrics.rankings import _binary_clf_curve
 14 
 15 #import sklearn as sklearn_

/Users/pigard/ROOT/install/lib/ROOT.pyc in _importhook(name, *args, **kwds)
299       except Exception:
300          pass
--> 301    return _orig_ihook( name, *args, **kwds )
302 
303 __builtin__.__import__ = _importhook

ImportError: No module named rankings

我认为这里的问题是模块和文件之间的区别:_binary_clf_curve 辅助函数没有添加到模块中(因为它不需要暴露给用户)所以我需要加载它不是来自模块,而是来自文件?

最佳答案

也许解决方案就像修复 type-o 一样简单?尝试

from sklearn.metrics.ranking import _binary_clf_curve

使用 ranking 而不是 rankings。这对我有用。

关于python - 使用 sklearn 内部函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32589447/

相关文章:

python - 导入 matplotlib afm 速度极慢

python - 检查python脚本是否正在运行

python - CELERYD_CONCURRENCY, --并发和自动缩放

python - 如何知道我是否过度拟合/欠拟合我的数据?

python - SGD分类器对不同维度输入数据的部分拟合学习

python - 在 fit 方法需要 3 个参数的自定义类上使用 sklearn GridSearchCV

python-3.x - cluster_centers_的排序/索引在KMeans聚类SKlearn中代表什么

python - 元组的 Pandas 数据框?

python - 为什么我在这个 try-catch-finally block 中遇到错误?

python - 在 ML 分类器中编码文本