вычисление матрицы производительности вручную - PullRequest
1 голос
/ 26 февраля 2020

У меня проблема с назначением, когда я должен использовать столбцы y и y_score в файле .csv, где y - это действительный результат, а y_score - это выходной. Я должен рассмотреть уникальные y_score значения и отсортировать их в порядке возрастания и использовать каждое из них в качестве порогового значения и сравнить с фактическим y_score, чтобы найти y_predicted. Итак, y_predicted = [0 if y_score < threshold else 1]. из этого найдите Ложный положительный и ложный отрицательный для расчета A = 500*number of false negative + 100* number of false positive. Наконец найдите самое низкое значение metri c A.

Вот что я написал:

...

import pandas as pd

data2 = pd.read_csv('5_c.csv')

uniq2= data2['prob'].unique()

uniq2.sort()

aa=[]

for k,v in enumerate(uniq2):

    data2['thr'] = v

    for j,l in enumerate(data2['prob']):

      if l>v:

        data2['pred'] = 0
    else:
        data2['pred']=1

    df = data2[(data2['y']==0)&(data2['pred']==1)]

    FP = df.shape
    df = data2[(data2['y']==1)&(data2['pred']==1)]
    FN = df.shape
    A=100*FN+500*FP
    aa.append(A)
m=np.argmin(aa)
print(m)

...

Это образец моего CSV-файла

y     prob
0   0.458521

0   0.505037

0   0.418652

0   0.412057

0   0.375579

0   0.595387

0   0.370288

1 Ответ

0 голосов
/ 26 февраля 2020
import pandas as pd
import numpy as np

df = pd.DataFrame({'y':[0,0,0,0,1,1,0],'prob':[0.458521,0.505037,0.418652,0.412057,0.375579,0.595387,0.370288]})

un = df['prob'].unique()
aa = []
for i in un:
    fp = sum((df['y']==0)&((df['prob']>i)==1))
    fn = sum((df['y']==1)&((df['prob']>i)==0))
    A = 500*fn+100*fp
    aa.append(A)
print(un[np.argmin(aa)])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...