Heim  >  Artikel  >  Backend-Entwicklung  >  Kreuzvalidierung und Python-Code-Implementierung

Kreuzvalidierung und Python-Code-Implementierung

零到壹度
零到壹度Original
2018-04-16 11:45:3310253Durchsuche

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:

Kreuzvalidierung

3 Arten von Kreuzvalidierung

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn