Я новичок в обучении машинам и в scikit-learn.Scikit-learn: Как получить True Positive, True Negative, False Positive и False Negative
Моя проблема:
(Пожалуйста, исправьте любой тип missconception)
У меня есть набор данных, который является BIG JSON, я получить его и хранить его в trainList
переменной.
Я предварительно обрабатываю его, чтобы иметь возможность работать с ним.
После того, как я сделал это, я начинаю классификацию:
- я использую kfold метод перекрестной проверки для того, чтобы получить точность среднего и я тренируюсь классификатор.
- Я делаю предикаты, и я получаю матрицу точности и смешения этой складки.
- После этого я хотел бы получить значения True Positive (TP), True Negative (TN), False Positive (FP) и False Negative (FN). Я бы использовал эти параметры, чтобы получить Чувствительность и специфичность, и я бы их и общее количество ТП в HTML, чтобы показать диаграмму с ТП каждой метки.
Код:
Переменные у меня есть на данный момент:
trainList #It is a list with all the data of my dataset in JSON form
labelList #It is a list with all the labels of my data
Большая часть метода:
#I transform the data from JSON form to a numerical one
X=vec.fit_transform(trainList)
#I scale the matrix (don't know why but without it, it makes an error)
X=preprocessing.scale(X.toarray())
#I generate a KFold in order to make cross validation
kf = KFold(len(X), n_folds=10, indices=True, shuffle=True, random_state=1)
#I start the cross validation
for train_indices, test_indices in kf:
X_train=[X[ii] for ii in train_indices]
X_test=[X[ii] for ii in test_indices]
y_train=[listaLabels[ii] for ii in train_indices]
y_test=[listaLabels[ii] for ii in test_indices]
#I train the classifier
trained=qda.fit(X_train,y_train)
#I make the predictions
predicted=qda.predict(X_test)
#I obtain the accuracy of this fold
ac=accuracy_score(predicted,y_test)
#I obtain the confusion matrix
cm=confusion_matrix(y_test, predicted)
#I should calculate the TP,TN, FP and FN
#I don't know how to continue
Мне любопытно, почему вы поставили сравнение с 1 и 0. Это класс по умолчанию? –
Класс sklearn.preprocessing.LabelBinarizer (neg_label = 0, pos_label = 1, sparse_output = False) См.: Http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.LabelBinarizer.html Это самый распространенный схема Я видел через пакеты, которые я использовал и бизнес я работал в. – invoketheshell
Я думаю, вы должны INTER с переменой FP, FN https://en.wikipedia.org/wiki/False_positives_and_false_negatives «The ложноположительная ставка - это доля истинных негативов, которые по-прежнему дают положительные результаты теста, т. е. условную вероятность положительного результата теста при отсутствии события, которое не было ». –