2015-06-12 5 views
2

Я ищу для повторной обработки вывода «roc_curve» (sklearn).Как я могу переделать «roc_curve» (fpr, tpr)?

Когда я рисую fpr, tpr в Ipython это нормально, но иногда я хочу экспортировать его (в основном для клиента), но его трудно понять, потому что он не линейный.

Например

fpr =[0,0.1,0.4,0.9,1] 
tpr =[0,0.3,0.4,0.5,1] 

Как я могу RESAMPLE fpr быть линейным каждые 5% например:

[0,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.,0.85,0.9,0.95,1] 

и tpr:

[0,0.15,0.3,0.3167,0.333,0.35,0.3667,0.383,0.4,0.41,0.42,0.43,0.44,0.45,0.46,0.47,0.48,0.49,0.5,0.75,1] 

Как я могу продолжить?

+0

Что именно должно быть на выходе? Я действительно не понимаю, что означает «передискретизация» в вашем контексте. – cel

+0

Я отредактировал вопрос для получения дополнительной информации – steboc

ответ

1

Я думаю, что вы ищете кусочно-постоянную интерполяцию.

import numpy as np 
from scipy.interpolate import spline 

fpr =[0,0.1,0.4,0.9,1] 
tpr =[0,0.3,0.4,0.5,1] 

n = 20 
x_interp = np.linspace(0,1,n+1) 
y_interp = spline(fpr, tpr, x_interp, order=0) 

x_interp являются fpr значения

[ 0. 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 
    0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1. ] 

y_interp являются соответствующие значения tpr

[ 0. 0. 0.3 0.3 0.3 0.3 0.3 0.3 0.4 0.4 0.4 0.4 0.4 0.4 0.4 
    0.4 0.4 0.4 0.5 0.5 0.5] 
+0

спасибо, что это работает, но я меняю order = 0 на заказ = 1 – steboc

+0

@steboc, я тоже об этом думал, но я не уверен, что это хорошая идея. Проблема, которую я вижу здесь, заключается в том, что это сгладит кривую roc, и мне трудно обосновать, почему это имеет смысл. – cel

+0

не может найти сплайн на scipy doc. есть ли новое имя? – steboc

Смежные вопросы