Сгенерировать массив из сравнения

#python #arrays #loops #s

#питон #массивы #петли #s

Вопрос:

Я хочу, чтобы TPP был массивом со значением TPP для каждого порога. Печать должна быть такой: TPP-это: n1, n2…

 threshold=[0, 6, 15] df=[3,13,19,21] y_true=[0,0,1,0] y_pred=np.where(dflt;threshold,1,0) cm=confusion_matrix(y_true,y_pred) TP=cm[0,0] FN=cm[0,1] TPP=TP/(TP FN) print('TPP is:',TPP)  

Комментарии:

1. Зачем этот s тег, если вы используете Python?

2. «порог», вероятно, должен быть константой, если вы определяете значения «df» (которое в python является перегруженным именем).

3. под TPP вы подразумеваете «истинную положительную ставку»? Если это так, то это должно быть одно число в диапазоне [0.0, 1.0]

4. Я не имею ни малейшего представления о том, почему существует тег «s». Вероятно, из-за недостатка внимания.

Ответ №1:

Мне кажется, что этот код достигает вашей цели:

 from sklearn.metrics import confusion_matrix import numpy as np  threshold = [0, 6, 15, 20] df = [3,13,19,21] y_true = [0,0,1,0]  print('TPP is:', end=' ') for idx, i in enumerate(threshold):  y_pred = np.where(np.array(df) lt; i,1,0)  are_ones = y_true == np.ones(len(y_true))  predicted_as_zero = y_pred == np.zeros(len(y_true))  TP = sum( are_ones amp; np.array(y_pred) )  FN = sum( are_ones amp; predicted_as_zero )  if idx 1 == len(threshold):  print(TP/(TP FN), end='')  else:  print(TP/(TP FN), end=', ')  

Комментарии:

1. Спасибо, но есть ли способ хранить TP и FN в виде массивов, а не просто печатать по одному за раз?