Beim maschinellen Lernen teilen Sie die Daten in zwei Teile, einen zum Training und einen zum Testen, und messen die Genauigkeit. Daher erleichtert KFold das Teilen der Daten. Es gibt auch Static KFold und Shuffle Split, aber dieses Mal werde ich KFold verwenden.
KFold unterteilt die Daten in k Datensätze. Wenn Sie sie beispielsweise in 10 aufteilen, werden 9 als Trainingsdatensätze und die restlichen 1 zum Testen verwendet. Testen Sie in diesem Fall übrigens 10 Mal, damit die 10 getrennten Datensätze immer einmal zum Testen verwendet werden. Der Standardcode sieht folgendermaßen aus:
KFold
from sklearn.cross_validation import KFold
KFold(n_splits=3, shuffle=False, random_state=None)
Und unten sind die Parameter in KFold.
n_split Gibt an, wie viele Daten aufgeteilt werden sollen. Standard ist 3. Der Test wird für die hier angegebene Anzahl von Zahlenwerten wiederholt.
shuffle Der Standardwert ist False. Wenn Sie diesen Wert jedoch auf True setzen, können Sie Gruppen erstellen, indem Sie zufällig Werte aus dem Dataset abrufen, anstatt einfach fortlaufende Zahlen zu gruppieren.
random_state Indem dies zu einem numerischen Wert mit einem Zufallszahlensteuerparameter gemacht wird, kann jedes Mal derselbe Datensatz erhalten werden.
Hier Offizielles Dokument
cross_val_score ist ein praktisches Tool, mit dem Sie den Klassifikator, die Trainingsdaten und die Testdaten angeben und deren Genauigkeit bestimmen können. Unten ist der Standardcode.
cross_val_score
from sklearn.model_selection import cross_val_score
cross_val_score(estimator, X, y=None, groups=None, scoring=None, cv=None, n_jobs=1, verbose=0, fit_params=None, pre_dispatch='2*n_jobs')
Nachfolgend finden Sie eine Beschreibung der Hauptparameter.
estimator Dadurch wird der Klassifizierer angegeben.
X Daten für das Training angeben
y Angeben von Daten zum Testen
scoring Geben Sie an, wie Sie punkten möchten. Zusätzlich zur Genauigkeitsgenauigkeit gibt es Average_Precision und f1. Link
cv Als Abkürzung für Cross Validation können Sie angeben, wie die Daten aufgeteilt werden sollen.
Hier Offizielles Dokument
Es ist eine Methode, um die wichtigsten Methoden des maschinellen Lernens auf einmal anzuwenden. Dieses Mal werden wir DecisionTreeClassifier, KNeighborsClassifier und SVC verwenden. Bitte haben Sie zunächst einen Code. Übrigens werden wir hier so weit vorgehen, dass der Trainingsdatensatz und der Testdatensatz bereits getrennt wurden.
machine_learning
from sklearn.model_selection import KFold
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.svm import SVC
#Speichern Sie das Modell für maschinelles Lernen in der Liste
models = []
models.append(("KNC",KNeighborsClassifier()))
models.append(("DTC",DecisionTreeClassifier()))
models.append(("SVM",SVC()))
#Anwenden mehrerer Klassifizierer
results = []
names = []
for name,model in models:
kfold = KFold(n_splits=10, random_state=42)
result = cross_val_score(model,X_train,Y_train, cv = kfold, scoring = "accuracy")
names.append(name)
results.append(result)
#Zeigen Sie die Punktzahl des angewendeten Klassifikators an
for i in range(len(names)):
print(names[i],results[i].mean())
Das Ergebnis ist
KNC 0.88 DTC 0.91 SVM 0.79
Ich denke es wird so sein.
Recommended Posts