0

Ich mag oben K Funktionen mit SelectKBest und führen GaussianNB wählen:SelectKBest mit GaussianNB nicht präzisen/konsistenten Ergebnissen

selection = SelectKBest(mutual_info_classif, k=300) 

data_transformed = selection.fit_transform(data, labels) 
new_data_transformed = selection.transform(new_data) 

classifier = GaussianNB() 
classifier.fit(data_transformed, labels) 
y_predicted = classifier.predict(new_data) 
acc = accuracy_score(new_data_labels, y_predicted) 

Allerdings habe ich nicht konsistente Ergebnisse für Genauigkeit auf den gleichen Daten. Die Genauigkeit wurde:

0.61063743402354853 
0.60678034916768164 
0.61733658140479086 
0.61652456354039786 
0.64778725131952908 
0.58384084449857898 

für die gleichen Daten. Ich spalte nicht usw. Ich verwende nur zwei statische Sätze data und new_data.

Warum variieren die Ergebnisse? Wie stelle ich sicher, dass ich die gleiche Genauigkeit für die gleichen Daten bekomme?

Antwort

0

Dies ist, weil ihre Zufälligkeit in den Daten oder Variablen ist. Dies hängt von dem Zufallszahlengenerator ab, der intern von den Schätzfunktionen verwendet wird, in Ihrem Fall ist es mutual_info_classif, die Sie in SelectKBest übergeben.

Werfen Sie einen Blick auf die Verwendung von random_statehere und in this answer

Als Abhilfe können Sie die folgende Zeile am Anfang Ihrer Code einfügen können.

np.random.seed(some_integer) 

Dies setzt den Samen des numpy zum some_integer und soweit ich weiß, scikit Schätzer verwendet numpy den Zufallszahlengenerator. See this for more details

Verwandte Themen