我正在使用scikit-learn库来完成我的日常MVA业务。我使用的一个函数是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, _
并将其加载到我调用的本地命名空间中 来自sklearn.metrics.rankings import _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
辅助函数没有添加到模块中(因为它不需要暴露给用户)所以我需要加载它而不是从模块,但是从文件?
答案 0 :(得分:0)
也许解决方案就像修复类型一样简单?尝试
from sklearn.metrics.ranking import _binary_clf_curve
ranking
而非rankings
。这对我有用。