Heim > Artikel > Backend-Entwicklung > Kreuzvalidierung und Python-Code-Implementierung
Der in diesem Artikel vorgestellte Inhalt befasst sich mit der Kreuzvalidierung und der Python-Code-Implementierung. Jetzt kann ich ihn mit Ihnen teilen.
Zwei Arten von Modellauswahlmethoden: Regularisierung (typische Methode), Kreuzvalidierung.
Hier stellen wir die Kreuzvalidierung und ihre Python-Code-Implementierung vor.
Kreuzvalidierung
Wenn für eine bestimmte Stichprobe genügend Daten vorhanden sind, besteht eine einfache Möglichkeit zur Modellauswahl in der zufälligen Auswahl Es ist in drei Teile unterteilt: Trainingssatz, Verifizierungssatz und Testsatz.
Trainingsset: Trainingsmodell
Validierungsset: Modellauswahl
Testsatz: Abschließende Bewertung des Modells
Wählen Sie unter den gelernten Modellen mit unterschiedlicher Komplexität den Validierungssatz aus, der das Modell mit enthält minimaler Vorhersagefehler. Da der Validierungssatz über genügend Daten verfügt, ist es auch effektiv, diese für die Modellauswahl zu verwenden. In vielen praktischen Anwendungen, bei denen die Daten nicht ausreichen, können Kreuzvalidierungsmethoden verwendet werden.
Grundidee: Daten wiederholt verwenden, die gegebenen Daten in Trainingssätze und Testsätze segmentieren und dann auf dieser Basis wiederholt Training, Tests und Modellauswahl durchführen.
Einfache Kreuzvalidierung:
Teilen Sie die Daten zufällig in zwei Teile, den Trainingssatz und den Testsatz. Im Allgemeinen sind 70 % der Daten der Trainingssatz und 30 % der Testsatz.
Code (Teilungstrainingssatz, Testsatz):
from sklearn.cross_validation import train_test_split # data (全部数据) labels(全部目标值) X_train 训练集(全部特征) Y_train 训练集的目标值 X_train, X_test, Y_train, Y_test = train_test_split(data,labels, test_size=0.25, random_state=0) #这里训练集75%:测试集25%
wobei random_state
Erläuterung des Quellcodes: int, RandomState-Instanz oder None, optional (Standard=None)
int, RandomState-Instanz oder None, optional (Standard=None) Wenn int, ist random_state der vom Zufallszahlengenerator verwendete Startwert;
Wenn RandomState-Instanz, ist random_state der Zufallszahlengenerator;
Wenn None, ist es der Zufallszahlengenerator die RandomState-Instanz, die
von `np.random` verwendet wird.
Die Hauptidee ist: Wenn Sie einen bestimmten Wert festlegen, z. B. random_state =10, dann sind die Daten nach jeder Division gleich, auch wenn sie mehrmals ausgeführt wird. Wenn es auf „None“ gesetzt ist, also random_state=None, dann sind die Daten nach jeder Division unterschiedlich, und die Daten sind jedes Mal unterschiedlich, wenn die Division ausgeführt wird.
Code (Teilungstrainingssatz, Validierungssatz, Testsatz):
from sklearn import cross_validation train_and_valid, test = cross_validation.train_test_split(data, test_size=0.3,random_state=0) # 先分为两部分:训练和验证 , 测试集 train, valid = cross_validation.train_test_split(data, test_size=0.5,random_state=0) # 再把训练和验证分为:训练集 ,验证集
Verwandte Empfehlungen:
Die Verwendung von Kreuzvalidierung
Warum Kreuzvalidierung verwenden
Das obige ist der detaillierte Inhalt vonKreuzvalidierung und Python-Code-Implementierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!