Die Rastersuche und der Kreuztest wurden an verschiedenen Stellen eingeführt. Da es jedoch keinen Ort gab, an dem die Methode des Kreuztests basierend auf dem Ergebnis der Rastersuche eingeführt werden konnte, werde ich sie hier vorstellen.
Ich werde die Methode des Kreuztests basierend auf dem Ergebnis der Rastersuche vorstellen.
Holen Sie sich zunächst die Daten für maschinelles Lernen. Da scikit-learn mit einem voreingestellten Datensatz geliefert wird, ist es ein großartiger Ort, um vorerst mit dem maschinellen Lernen zu beginnen. Die Details des Datensatzes sind in [dieser Site] zusammengefasst (der Datensatz, der mit http://pythondatascience.plavox.info/scikit-learn/scikit-learn/ geliefert wird).
Datensatz
#Datensatz abrufen
iris = datasets.load_iris()
Führen Sie dann eine Rastersuche durch. Stellen Sie die Parameter für die Rastersuche ein und führen Sie sie aus. Eine der Attraktionen von Scikit-Learn ist, dass Sie das Raster einfach durchsuchen können. Es ist cool, einen Parameter als Hyperparameter call zu bezeichnen
Rastersuche
#Legen Sie die Parameter für die Rastersuche fest
parameters = {
'C':[1, 3, 5],
'loss':('hinge', 'squared_hinge')
}
#Führen Sie eine Rastersuche durch
clf = grid_search.GridSearchCV(svm.LinearSVC(), parameters)
clf.fit(iris.data, iris.target)
#Raster-Suchergebnisse(Optimale Parameter)Erhalten
GS_loss, GS_C = clf.best_params_.values()
print "Optimale Parameter:{}".format(clf.best_params_)
Die optimalen Parameter werden 'GS_loss' bzw. 'GS_C' zugewiesen. Bevor Sie die optimalen Parameter erhalten, sollten Sie diese einmal anzeigen und die Reihenfolge der Parameter überprüfen. Die Reihenfolge der Parameter scheint nicht die Reihenfolge der Parameter auf der [offiziellen Website (sklearn.svm.LinearSVC)] zu sein (http://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVC.html) ...
Der Kreuztest wird basierend auf dem Ergebnis der Rastersuche am Ende durchgeführt.
Kreuztest
#Kreuztest(Kreuzvalidierung)Lauf
clf = svm.LinearSVC(loss=GS_loss, C=GS_C)
score = cross_validation.cross_val_score(clf, iris.data, iris.target, cv=5)
#Zeigen Sie das Ergebnis des Kreuztests an
print "Richtige Antwortrate(durchschnittlich):{}".format(score.mean())
print "Richtige Antwortrate(Minimum):{}".format(score.min())
print "Richtige Antwortrate(maximal):{}".format(score.max())
print "Richtige Antwortrate(Standardabweichung):{}".format(score.std())
print "Richtige Antwortrate(alles):{}".format(score)
Das ganze
# -*- coding: utf-8 -*-
from sklearn import datasets
from sklearn import svm
from sklearn import grid_search
from sklearn import cross_validation
# main
if __name__ == "__main__":
#Datensatz abrufen
iris = datasets.load_iris()
#Legen Sie die Parameter für die Rastersuche fest
parameters = {
'C':[1, 3, 5],
'loss':('hinge', 'squared_hinge')
}
#Führen Sie eine Rastersuche durch
clf = grid_search.GridSearchCV(svm.LinearSVC(), parameters)
clf.fit(iris.data, iris.target)
#Raster-Suchergebnisse(Optimale Parameter)Erhalten
GS_loss, GS_C = clf.best_params_.values()
print "Optimale Parameter:{}".format(clf.best_params_)
#Kreuztest(Kreuzvalidierung)Lauf
clf = svm.LinearSVC(loss=GS_loss, C=GS_C)
score = cross_validation.cross_val_score(clf, iris.data, iris.target, cv=5)
#Zeigen Sie das Ergebnis des Kreuztests an
print "Richtige Antwortrate(durchschnittlich):{}".format(score.mean())
print "Richtige Antwortrate(Minimum):{}".format(score.min())
print "Richtige Antwortrate(maximal):{}".format(score.max())
print "Richtige Antwortrate(Standardabweichung):{}".format(score.std())
print "Richtige Antwortrate(alles):{}".format(score)
Ausführungsergebnis
Optimale Parameter:{'loss': 'squared_hinge', 'C': 1}
Richtige Antwortrate(durchschnittlich):0.966666666667
Richtige Antwortrate(Minimum):0.9
Richtige Antwortrate(maximal):1.0
Richtige Antwortrate(Standardabweichung):0.0421637021356
Richtige Antwortrate(alles):[ 1. 1. 0.93333333 0.9 1. ]
Es war ein bisschen enttäuschend, dass die Ergebnisse der Rastersuche mit den Standardeinstellungen von LinearSVC () übereinstimmten, aber vorerst konnte ich anhand der Rastersuchergebnisse einen Kreuztest durchführen. Ich war allergisch gegen Englisch, daher fiel es mir schwer, beim Betrachten der offiziellen Website zu lernen.
[Datensatz, der mit scikit-learn geliefert wird](http://pythondatascience.plavox.info/scikit-learn/Dataset, der mit scikit-learn geliefert wird /)
Offizielle Website (sklearn.svm.LinearSVC)
Einführung der Python-Bibliothek für maschinelles Lernen scicit-learn
Recommended Posts