Ich bin neu im maschinellen Lernen und in scikit-learn.Scikit-lernen: So erhalten Sie True Positive, True Negative, False Positive und False Negative
Mein Problem:
(Bitte korrigieren Sie jede Art von missconception)
Ich habe einen Datensatz, der ein BIG JSON ist, rufe ich sie und speichern sie in einer trainList
variabel.
Ich pre-Prozess es um damit arbeiten zu können.
Sobald ich das getan haben, ich die Klassifizierung beginnen:
- I kfold Kreuzvalidierungsmethode verwenden, um die mittlere Genauigkeit zu erhalten, und ich trainiere einen Klassifikator.
- Ich mache die Voraussagen und ich erhalte die Genauigkeit und Verwirrung Matrix dieser Falte.
- Danach möchte ich die True Positive (TP), True Negative (TN), False Positive (FP) und False Negative (FN) -Werte erhalten. Ich würde diese Parameter verwenden, um die Sensitivität und die Spezifität zu erhalten, und ich würde ihnen und der Summe der TPs einen HTML geben, um ein Diagramm mit den TPs jedes Etiketts zu zeigen.
Code:
Die Variablen, die ich für den Moment haben:
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
Der größte Teil des Verfahrens:
#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
Ich bin neugierig, warum Sie den Vergleich mit 1 und 0 setzen. Ist das die Standardklasse? –
Klasse sklearn.preprocessing.LabelBinizer (neg_label = 0, pos_label = 1, sparse_output = False) Siehe: http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.LabelBinarizer.html Dies ist am häufigsten I Schema haben über die Pakete gesehen, die ich verwendet habe und die Unternehmen, die ich in gearbeitet haben. – invoketheshell
ich glaube, Sie sollten inter Änderung FP, FN https://en.wikipedia.org/wiki/False_positives_and_false_negatives „The Falsch-Positiv-Rate ist der Anteil an echten Negativen, die immer noch positive Testergebnisse liefern, dh die bedingte Wahrscheinlichkeit eines positiven Testergebnisses bei einem Ereignis, das nicht vorhanden war. " –