2015-09-15 5 views
2

Я использую библиотеку scikit-learn для своего ежедневного бизнеса MVA. Одной из функций, которые я использую, является метод roc_curve() для получения кривых ROC. Функция возвращает ложноположительные и истинные положительные значения. В моей области (HEP) мы предпочитаем работать с эффективностью, т. Е. Я хочу нормализовать количество истинных положительных результатов до общего количества положительных результатов.Использование внутренней функции sklearn

Чтобы получить то, что мне нужно, я хочу, чтобы повторно использовать _binary_clf_curve() функция sklearn.metric.rankings, т.е.

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. рейтинг 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

Возможно, решение так же просто, как и установка типа-o? Попробуйте

from sklearn.metrics.ranking import _binary_clf_curve 

с ranking и не rankings. Это сработало для меня.

+0

Спасибо, Джеймс, мне стыдно, что я пропустил это. – Philipp