{"id":178842,"date":"2026-02-18T22:27:36","date_gmt":"2026-02-18T21:27:36","guid":{"rendered":"https:\/\/liora.io\/de\/?p=178842"},"modified":"2026-02-20T09:10:45","modified_gmt":"2026-02-20T08:10:45","slug":"train-test-split","status":"publish","type":"post","link":"https:\/\/liora.io\/de\/train-test-split","title":{"rendered":"train_test_split: Tutorial zur Verwendung dieser Funktion"},"content":{"rendered":"\n<p><strong>Ein Machine-Learning-Modell ist in der Lage, selbstst\u00e4ndig aus einem Datensatz zu lernen, mit dem Ziel, Verhalten in einem anderen Datensatz vorherzusagen. Dazu findet es zugrunde liegende Beziehungen zwischen unabh\u00e4ngigen erkl\u00e4renden Variablen und einer Zielvariablen im urspr\u00fcnglichen Datensatz. Dann verwendet er diese Muster, um neue Daten vorherzusagen oder zu klassifizieren.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-wie-wird-die-funktion-train-test-split-definiert\">Wie wird die Funktion train_test_split definiert?<\/h2>\n\n\n\n<p>Um die <strong>Effektivit\u00e4t<\/strong> eines <a href=\"https:\/\/liora.io\/de\/machine-learning-definition-funktionsweise-anwendungen\">Machine-Learning-Modells<\/a> zu \u00fcberpr\u00fcfen, wird der urspr\u00fcngliche <strong>Datensatz<\/strong> in zwei <strong>Sets<\/strong> aufgeteilt: ein <strong>Trainingsset<\/strong> und ein <strong>Testset<\/strong>. Das <strong>Trainingsset<\/strong> wird verwendet, um das <strong>Modell<\/strong> auf einem Teil der <strong>Daten<\/strong> zu <strong>fitten<\/strong>, d. h. zu <strong>trainieren<\/strong>. Das <strong>Testset<\/strong> wird verwendet, um die <strong>Leistung<\/strong> des <strong>Modells<\/strong> auf dem anderen Teil der <strong>Daten<\/strong> zu bewerten. Die Funktion <strong>train_test_split<\/strong> aus der <strong>ScikitLearn-Bibliothek<\/strong> (<strong>sklearn<\/strong>) in <strong>Python<\/strong> erm\u00f6glicht diese Aufteilung in zwei <strong>Sets<\/strong>.<\/p>\n\n\n\n<p>Als Erstes solltest du daran denken, die Funktion <strong>train_test_split<\/strong> aus dem <strong>model_selection-Paket<\/strong> von <strong>sklearn<\/strong> zu importieren, indem du den folgenden <strong>Code<\/strong> benutzt:<\/p>\n\n\n\n<pre class=\"wp-block-code has-xsmall-font-size\" style=\"margin-top:var(--wp--preset--spacing--columns);margin-bottom:var(--wp--preset--spacing--columns)\"><code>from sklearn.model_selection import train_test_split<\/code><\/pre>\n\n\n\n<p>Wenn die Funktion einmal importiert ist, hat sie mehrere Argumente:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter is-resized\"><img decoding=\"async\" src=\"https:\/\/liora.io\/app\/uploads\/2023\/03\/train-test-split1.png\" alt=\"\" style=\"width:450px\" title=\"\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-1-arrays-die-aus-dem-zu-teilenden-datensatz-entnommen-wurden\">1) Arrays, die aus dem zu teilenden Datensatz entnommen wurden.<\/h3>\n\n\n\n<p>Beim <a href=\"https:\/\/liora.io\/de\/unueberwachtes-lernen-prinzip-und-verwendung\">\u00fcberwachten Lernen<\/a> sind diese Arrays das <strong>Input-Array X,<\/strong> das aus den erkl\u00e4renden Variablen in den Spalten besteht, und das <strong>Output-Array y<\/strong>, das aus der Zielvariablen (d. h. den Labels) besteht. <\/p>\n\n\n\n<p>Beim <strong>unbeaufsichtigten Lernen<\/strong> ist das einzige Array als Argument das<strong> Input-Array X,<\/strong> das aus den erkl\u00e4renden Variablen in den Spalten besteht.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>Hinweis: Achte auf die Dimensionen! X muss ein zweidimensionales Array sein. y muss ein eindimensionales Array sein, das der Anzahl der Zeilen in X entspricht. Um dies zu erreichen, kannst du gerne die Funktion .reshape verwenden.<\/em><\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-2-die-grosse-des-testsets-test-size-und-die-grosse-des-trainingssets-train-size\">2) Die Gr\u00f6\u00dfe des Testsets (test_size) und die Gr\u00f6\u00dfe des Trainingssets (train_size).<\/h3>\n\n\n\n<p>Die Gr\u00f6\u00dfe jedes Satzes ist entweder eine Dezimalzahl zwischen 0 und 1, die einen Anteil des Datensatzes darstellt, oder eine ganze Zahl, die eine Anzahl von Beispielen des Datensatzes darstellt.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>Hinweis: Es ist ausreichend, nur eines dieser Argumente zu setzen, das zweite ist komplement\u00e4r dazu.<\/em><\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-3-der-random-state-random-state\">3) Der random state (random_state).<\/h3>\n\n\n\n<p>Der random state ist eine Zahl, die steuert, wie der Pseudo-Zufallsgenerator die Daten aufteilt.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>Hinweis: Wenn du eine ganze Zahl als random state w\u00e4hlst, werden die Daten bei jedem Aufruf der Funktion auf die gleiche Weise aufgeteilt. Dies macht den Code also reproduzierbar.<\/em><\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-4-le-shuffle-shuffle\">4) Le shuffle (shuffle).<\/h3>\n\n\n\n<p>Shuffle ist ein Boolean-Wert, der ausw\u00e4hlt, ob die Daten vor dem Trennen gemischt werden sollen oder nicht. Im Falle, dass sie nicht gemischt werden, werden die Daten also in der Reihenfolge getrennt, in der sie urspr\u00fcnglich waren.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>Hinweis: Der Standardwert ist True.<\/em><\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-5-stratify-stratify\">5) Stratify (stratify).<\/h3>\n\n\n\n<p>Der Stratify-Parameter w\u00e4hlt aus, ob die Daten so getrennt werden, dass der Anteil der Beobachtungen in jeder Klasse in den train- und test-Sets gleich bleibt wie im Ausgangsdatensatz.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>Anmerkungen:<\/em><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>Diese Einstellung ist besonders n\u00fctzlich angesichts von &#8222;unbalanced&#8220;-Daten mit sehr unausgewogenen Anteilen zwischen den verschiedenen Klassen.<\/em><\/li>\n\n\n\n<li><em>Der Standardwert ist None.<\/em><\/li>\n<\/ul>\n<\/blockquote>\n\n\n\n<p>Die Funktion train_test_split gibt eine Anzahl von Outputs zur\u00fcck, die doppelt so hoch ist wie die Anzahl ihrer Inputs, und zwar in Form eines Arrays. Beim \u00fcberwachten Lernen gibt sie also vier Outputs zur\u00fcck: X_train, X_test, y_train und y_test. Beim un\u00fcberwachten Lernen gibt sie zwei Outputs zur\u00fcck: X_train und X_test.<\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/liora.io\/de\/weiterbildung\/data-ki\">Machine Learning Modelle lernen<\/a><\/div>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"wie-kann-man-die-leistung-eines-modells-mit-der-funktion-train_test_split-bewerten\">Wie kann man die Leistung eines Modells mit der Funktion train_test_split bewerten?<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\" style=\"margin-top:var(--wp--preset--spacing--columns);margin-bottom:var(--wp--preset--spacing--columns)\"><img decoding=\"async\" width=\"1024\" height=\"572\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2026\/02\/code-bildschirm-computerprogrammierung-1024x572.jpg\" alt=\"Ein Computerbildschirm, der laufenden Programmcode anzeigt.\" class=\"wp-image-218373\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2026\/02\/code-bildschirm-computerprogrammierung-1024x572.jpg 1024w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2026\/02\/code-bildschirm-computerprogrammierung-300x167.jpg 300w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2026\/02\/code-bildschirm-computerprogrammierung-768x429.jpg 768w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2026\/02\/code-bildschirm-computerprogrammierung-1536x857.jpg 1536w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2026\/02\/code-bildschirm-computerprogrammierung-2048x1143.jpg 2048w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2026\/02\/code-bildschirm-computerprogrammierung-440x246.jpg 440w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2026\/02\/code-bildschirm-computerprogrammierung-785x438.jpg 785w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2026\/02\/code-bildschirm-computerprogrammierung-210x117.jpg 210w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2026\/02\/code-bildschirm-computerprogrammierung-115x64.jpg 115w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Sobald die <strong>Funktion train_test_split<\/strong> definiert ist, gibt sie eine Train- und eine Testmenge zur\u00fcck. Dieses Datensplitting erm\u00f6glicht es, ein Machine-Learning-Modell aus zwei verschiedenen Blickwinkeln zu bewerten.<\/p>\n\n\n\n<p>Das Modell wird mit der von der Funktion zur\u00fcckgegebenen Trainmenge trainiert. Dann werden seine Vorhersagef\u00e4higkeiten anhand der Testmenge, die von der Funktion zur\u00fcckgegeben wird, bewertet. F\u00fcr diese Bewertung k\u00f6nnen mehrere Metriken verwendet werden. Im Falle einer linearen Regression werden das Bestimmtheitsma\u00df, der <strong>RMSE und der MAE<\/strong> bevorzugt. Im Falle einer Klassifikation werden die Genauigkeit, die Pr\u00e4zision, der Recall und der F1-Score bevorzugt. Die Ergebnisse des Testsatzes zeigen also, wie gut das Modell ist und wie sehr es verbessert werden muss, bevor es auf einem neuen Datensatz vorhergesagt werden kann.<\/p>\n\n\n\n<p>Die von der Funktion train_test_split zur\u00fcckgegebenen train- und test-Sets spielen auch eine wichtige Rolle bei der Erkennung von Overfitting oder Underfitting. Zur Erinnerung: Overfitting beschreibt eine Situation, in der das erstellte Modell zu komplex ist (z. B. mit zu vielen erkl\u00e4renden Variablen), so dass es die Trainingsdaten perfekt lernt, aber nicht in der Lage ist, auf andere Daten zu verallgemeinern.<\/p>\n\n\n\n<p>Umgekehrt beschreibt <a href=\"https:\/\/liora.io\/de\/underfitting-in-machine-learning-so-loest-du-es\">Underfitting<\/a> eine Situation, in der das Modell zu einfach oder schlecht gew\u00e4hlt ist (z. B. die Wahl einer linearen Regression f\u00fcr Daten, die nicht den Annahmen entsprechen), so dass es schlecht lernt. Diese beiden Probleme k\u00f6nnen durch verschiedene Techniken behoben werden, aber sie m\u00fcssen erst einmal gefunden werden, was mit der Funktion <strong>train_test_split<\/strong> m\u00f6glich ist. Wir k\u00f6nnen n\u00e4mlich die Leistung des Modells in der Train- und der Testmenge, die von der Funktion erstellt wurden, vergleichen. Wenn die Leistung in der Trainmenge gut ist, aber in der Testmenge schlecht, <a href=\"https:\/\/liora.io\/de\/overfitting-was-ist-das-wie-kann-man-es-vermeiden\">handelt es sich wahrscheinlich um Overfitting.<\/a><\/p>\n\n\n\n<p>Wenn die Leistung im Trainsatz genauso schlecht ist wie im Testsatz, handelt es sich wahrscheinlich um Underfitting. Die beiden Mengen, die die Funktion zur\u00fcckgibt, sind daher entscheidend f\u00fcr die Erkennung dieser wiederkehrenden <strong>Probleme im Machine Learning.<\/strong><\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"wie-loest-man-ein-vollstaendiges-machine-learning-problem-mithilfe-der-funktion-train_test_split\">Wie l&ouml;st man ein vollst&auml;ndiges Machine-Learning-Problem mithilfe der Funktion train_test_split?<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\" style=\"margin-top:var(--wp--preset--spacing--columns);margin-bottom:var(--wp--preset--spacing--columns)\"><img decoding=\"async\" width=\"1024\" height=\"572\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2026\/02\/tabelle-der-evaluationsmetriken-von-machine-learning-modellen-1024x572.jpg\" alt=\"Tabelle der Evaluationsmetriken f\u00fcr Modelle des maschinellen Lernens, einschlie\u00dflich RMSE, MAE, Precision und Recall.\" class=\"wp-image-218374\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2026\/02\/tabelle-der-evaluationsmetriken-von-machine-learning-modellen-1024x572.jpg 1024w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2026\/02\/tabelle-der-evaluationsmetriken-von-machine-learning-modellen-300x167.jpg 300w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2026\/02\/tabelle-der-evaluationsmetriken-von-machine-learning-modellen-768x429.jpg 768w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2026\/02\/tabelle-der-evaluationsmetriken-von-machine-learning-modellen-1536x857.jpg 1536w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2026\/02\/tabelle-der-evaluationsmetriken-von-machine-learning-modellen-2048x1143.jpg 2048w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2026\/02\/tabelle-der-evaluationsmetriken-von-machine-learning-modellen-440x246.jpg 440w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2026\/02\/tabelle-der-evaluationsmetriken-von-machine-learning-modellen-785x438.jpg 785w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2026\/02\/tabelle-der-evaluationsmetriken-von-machine-learning-modellen-210x117.jpg 210w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2026\/02\/tabelle-der-evaluationsmetriken-von-machine-learning-modellen-115x64.jpg 115w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Nachdem wir nun die Verwendung und die Funktionen der Funktion train_test_split verstanden haben, wollen wir sie anhand eines echten Machine-Learning-Problems in die Praxis umsetzen.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"schritt-1-verstaendnis-des-problems\">Schritt 1: Verst&auml;ndnis des Problems<\/h3>\n\n\n\n<p>Wir entscheiden uns daf\u00fcr, ein \u00fcberwachtes Lernproblem so zu l\u00f6sen, dass die erwarteten Labels bekannt sind. Genauer gesagt konzentrieren wir uns auf eine bin\u00e4re Klassifizierung. Ziel ist es, anhand von K\u00f6rpermerkmalen vorherzusagen, ob eine Person an Brustkrebs erkrankt ist oder nicht.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"schritt-2-daten-wiederherstellen\">Schritt 2: Daten wiederherstellen<\/h3>\n\n\n\n<p>Wir verwenden das <a href=\"https:\/\/liora.io\/de\/datasets-top-5-websites-fuer-qualitativ-hochwertige-datensaetze\">Dataset<\/a> &#8222;breast_cancer&#8220;, das in der Sklearn Library enthalten ist.<\/p>\n\n\n\n<pre class=\"wp-block-code has-xsmall-font-size\" style=\"margin-top:var(--wp--preset--spacing--columns);margin-bottom:var(--wp--preset--spacing--columns)\"><code>import numpy as np\nfrom sklearn.datasets import load_breast_cancer\ndf=load_breast_cancer()<\/code><\/pre>\n\n\n\n<p>Mit den folgenden Codezeilen rufen wir die erkl\u00e4renden<strong> Variablen (features) und die Zielvariable (target) ab:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code has-xsmall-font-size\" style=\"margin-top:var(--wp--preset--spacing--columns);margin-bottom:var(--wp--preset--spacing--columns)\"><code>print(\"features :\", df.feature_names)\nprint (\"target :\", df.target_names)<\/code><\/pre>\n\n\n\n<p>Wir erhalten, dass die vorherzusagenden Zielvariablen zwei Werte annehmen (&#8222;malignant&#8220; und &#8222;benign&#8220;) und dass das Problem tats\u00e4chlich eine bin\u00e4re Klassifizierung ist.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"schritt-3-erstellen-von-x-und-y\">Schritt 3: Erstellen von X und y<\/h3>\n\n\n\n<p>Wir erstellen das zweidimensionale Input-Array X und das eindimensionale Output-Array y. F\u00fcr dieses Dataset wird die bin\u00e4re Kodierung der Zielvariablen von sklearn durchgef\u00fchrt und kann direkt abgerufen werden.<\/p>\n\n\n\n<pre class=\"wp-block-code has-xsmall-font-size\" style=\"margin-top:var(--wp--preset--spacing--columns);margin-bottom:var(--wp--preset--spacing--columns)\"><code>X, y = load_breast_cancer(return_X_y=True)\nprint(\"X :\", X)\nprint(\"y :\", y)\nprint(\"Dimensions de X :\", X.shape)\nprint(\"Dimensions de y :\", y.shape)<\/code><\/pre>\n\n\n\n<p>Wir \u00fcberpr\u00fcfen, dass die Dimensionen von X und y \u00fcbereinstimmen: y hat die gleiche Anzahl an Zeilen wie X.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"schritt-4-erstellen-von-train-und-testsets\">Schritt 4: Erstellen von Train- und Testsets<\/h3>\n\n\n\n<p>Wir teilen die Daten in einen train_test_split.<\/p>\n\n\n\n<p>Da wir der Funktion <strong>train_test_split<\/strong> zwei Arrays X und y \u00fcbergeben, gibt sie vier Elemente zur\u00fcck. Wir w\u00e4hlen einen Testsatz, der aus 10 % der Daten besteht. Wir w\u00e4hlen eine Zahl vom Typ &#8222;int&#8220; als random state, um die Reproduzierbarkeit des Codes zu gew\u00e4hrleisten. Wir verwenden nicht die letzten Parameter der Funktion, da diese f\u00fcr ein so einfaches Problem nicht notwendig sind.<\/p>\n\n\n\n<pre class=\"wp-block-code has-xsmall-font-size\" style=\"margin-top:var(--wp--preset--spacing--columns);margin-bottom:var(--wp--preset--spacing--columns)\"><code>from sklearn.model_selection import train_test_split\nX_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.1, random_state=123)<\/code><\/pre>\n\n\n<h3 class=\"wp-block-heading\" id=\"schritt-5-klassifikationsmodell\">Schritt 5: Klassifikationsmodell<\/h3>\n\n\n\n<p>Um die <a href=\"https:\/\/liora.io\/de\/klassifikationsalgorithmen-definition-und-hauptmodelle\">Klassifizierungsaufgabe<\/a> zu l\u00f6sen, erstellen wir ein Modell der k-n\u00e4chsten Nachbarn. Wir trainieren das Modell auf dem train set mit der Methode .fit(). Dann testen wir die Leistung des Modells auf dem Testset mit der Methode .predict(). So erhalten wir die vorhergesagten Klassen f\u00fcr die Beobachtungen des Testsets.<\/p>\n\n\n\n<pre class=\"wp-block-code has-xsmall-font-size\" style=\"margin-top:var(--wp--preset--spacing--columns);margin-bottom:var(--wp--preset--spacing--columns)\"><code>from sklearn.neighbors import KNeighborsClassifier\nclf = KNeighborsClassifier()\nclf.fit(X_train, y_train)\nprediction = clf.predict(X_test)<\/code><\/pre>\n\n\n<h3 class=\"wp-block-heading\" id=\"schritt-6-bewertung-des-modells\">Schritt 6: Bewertung des Modells<\/h3>\n\n\n\n<p>Wir w\u00e4hlen als Metrik die <strong>Genauigkeit (accuracy).<\/strong> Die Genauigkeit ist die Anzahl der richtigen Vorhersagen im Verh\u00e4ltnis zur Gesamtzahl der Vorhersagen. Wir berechnen sie f\u00fcr die Train- und Testmenge mithilfe der Methode .score(), die die wahren Klassen im Datensatz mit den vom clf-Klassifikator vorhergesagten Klassen vergleicht.<\/p>\n\n\n\n<pre class=\"wp-block-code has-xsmall-font-size\" style=\"margin-top:var(--wp--preset--spacing--columns);margin-bottom:var(--wp--preset--spacing--columns)\"><code>print(clf.score(X_train, y_train))\nprint(clf.score(X_test, y_test))<\/code><\/pre>\n\n\n\n<p>Wir erhalten eine accuracy von 0,95 f\u00fcr die Trainmenge und von 0,93 f\u00fcr die Testmenge. Das Modell hat also eine gute Klassifikationsleistung.<\/p>\n\n\n\n<p>Au\u00dferdem ist die Genauigkeit der Testmenge nur geringf\u00fcgig geringer als die der Trainmenge. Das bedeutet, dass sich das Modell gut auf neue Daten verallgemeinern l\u00e4sst. Wir haben es also nicht mit einem Overfitting-Problem zu tun.<\/p>\n\n\n\n<p>Die Funktion train_test_split ist also einfach zu verwenden und sehr effizient, um ein komplettes Machine-Learning-Problem zu l\u00f6sen.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"gibt-es-grenzen-fuer-die-funktion-train_test_split\">Gibt es Grenzen f&uuml;r die Funktion train_test_split?<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\" style=\"margin-top:var(--wp--preset--spacing--columns);margin-bottom:var(--wp--preset--spacing--columns)\"><img decoding=\"async\" width=\"1024\" height=\"572\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2026\/02\/grafik-performance-precision-modelle-1024x572.jpg\" alt=\"Diagramm, das die accuracy der Modelle in Abh\u00e4ngigkeit von random states zeigt und die Variation der performance veranschaulicht.\" class=\"wp-image-218375\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2026\/02\/grafik-performance-precision-modelle-1024x572.jpg 1024w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2026\/02\/grafik-performance-precision-modelle-300x167.jpg 300w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2026\/02\/grafik-performance-precision-modelle-768x429.jpg 768w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2026\/02\/grafik-performance-precision-modelle-1536x857.jpg 1536w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2026\/02\/grafik-performance-precision-modelle-2048x1143.jpg 2048w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2026\/02\/grafik-performance-precision-modelle-440x246.jpg 440w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2026\/02\/grafik-performance-precision-modelle-785x438.jpg 785w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2026\/02\/grafik-performance-precision-modelle-210x117.jpg 210w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2026\/02\/grafik-performance-precision-modelle-115x64.jpg 115w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Die Funktion train_test_split hat jedoch eine Hauptbeschr\u00e4nkung, die mit dem Parameter random_state zusammenh\u00e4ngt. Wenn der Wert f\u00fcr random state eine ganze Zahl ist, werden die Daten mithilfe eines Pseudo-Zufallsgenerators, der mit dieser ganzen Zahl initialisiert wird und seed genannt wird, getrennt.<\/p>\n\n\n\n<p>Die durchgef\u00fchrte Trennung ist reproduzierbar, da derselbe Seed beibehalten wird. Es hat sich jedoch gezeigt, dass die Wahl des Seed die Leistung des zugeh\u00f6rigen Machine-Learning-Modells beeinflusst: Unterschiedliche Seds k\u00f6nnen unterschiedliche Sets und unterschiedliche Punktzahlen erzeugen.<\/p>\n\n\n\n<p>Eine L\u00f6sung f\u00fcr dieses Problem besteht darin, die Funktion train_test_split mehrmals mit unterschiedlichen Werten f\u00fcr random_state zu verwenden. Wir k\u00f6nnen dann den Durchschnitt der erzielten Punktzahlen berechnen.<\/p>\n\n\n\n<p>So ist die Funktion train_test_split aus der <a href=\"https:\/\/liora.io\/de\/top-10-der-python-bibliotheken-fur-data-scientists\">Python-Bibliothek<\/a> sklearn bei richtiger Anwendung essentiell f\u00fcr die Durchf\u00fchrung eines Data Science-Projekts und die <a href=\"https:\/\/liora.io\/de\/kreuzvalidierungsverfahren-definition-und-bedeutung-fur-machine-learning\">Bewertung eines Machine Learning-Modells!<\/a><\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/liora.io\/de\/weiterbildung\/data-ki\/data-scientist\">Data Scientist werden<\/a><\/div>\n<\/div>\n\n\n\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Wie wird die Funktion train_test_split definiert?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Die Funktion train_test_split aus sklearn.model_selection teilt Datens\u00e4tze in Trainings- und Testsets auf. Wichtige Parameter sind: Arrays (X f\u00fcr erkl\u00e4rende Variablen, y f\u00fcr Zielvariable), test_size\/train_size (Anteil oder absolute Gr\u00f6\u00dfe), random_state (f\u00fcr reproduzierbare Aufteilung), shuffle (ob Daten gemischt werden sollen) und stratify (zur Beibehaltung der Klassenanteile bei unausgeglichenen Daten). Die Funktion gibt doppelt so viele Outputs wie Inputs zur\u00fcck (z.B. X_train, X_test, y_train, y_test).\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Wie kann man die Leistung eines Modells mit der Funktion train_test_split bewerten?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Nach der Aufteilung wird das Modell mit dem Trainingsset trainiert und mit dem Testset evaluiert. Die Wahl der Metrik h\u00e4ngt vom Problem ab: Bei Regression eignen sich Bestimmtheitsma\u00df, RMSE, MAE; bei Klassifikation Accuracy, Precision, Recall, F1-Score. Durch Vergleich der Leistung auf Trainings- und Testset lassen sich Overfitting (gute Trainings-, schlechte Testleistung) und Underfitting (schlechte Leistung auf beiden Sets) erkennen.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Wie l\u00f6st man ein vollst\u00e4ndiges Machine-Learning-Problem mithilfe der Funktion train_test_split?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Ein vollst\u00e4ndiges Beispiel mit dem breast_cancer-Dataset zeigt die sechs Schritte: 1. Problemverst\u00e4ndnis (bin\u00e4re Klassifikation), 2. Daten laden, 3. X und y erstellen, 4. Train-Test-Split (hier 10% Testdaten, random_state=123), 5. Modelltraining mit k-N\u00e4chste-Nachbarn, 6. Bewertung mit Accuracy (95% Training, 93% Test) \u2013 das Modell generalisiert gut ohne Overfitting.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Gibt es Grenzen f\u00fcr die Funktion train_test_split?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Die Hauptbeschr\u00e4nkung liegt im Parameter random_state: Unterschiedliche Seeds k\u00f6nnen zu unterschiedlichen Aufteilungen und damit zu unterschiedlichen Modellleistungen f\u00fchren. Eine L\u00f6sung ist die wiederholte Anwendung der Funktion mit verschiedenen random_state-Werten und die Mittelung der Ergebnisse. Trotz dieser Einschr\u00e4nkung ist train_test_split essentiell f\u00fcr Data-Science-Projekte und die Modellbewertung.\"\n      }\n    }\n  ]\n}\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Ein Machine-Learning-Modell ist in der Lage, selbstst\u00e4ndig aus einem Datensatz zu lernen, mit dem Ziel, Verhalten in einem anderen Datensatz vorherzusagen. Dazu findet es zugrunde liegende Beziehungen zwischen unabh\u00e4ngigen erkl\u00e4renden Variablen und einer Zielvariablen im urspr\u00fcnglichen Datensatz. Dann verwendet er diese Muster, um neue Daten vorherzusagen oder zu klassifizieren. Wie wird die Funktion train_test_split definiert? [&hellip;]<\/p>\n","protected":false},"author":76,"featured_media":218376,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"editor_notices":[],"footnotes":""},"categories":[2472],"class_list":["post-178842","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-ki"],"acf":[],"_links":{"self":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/178842","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/users\/76"}],"replies":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/comments?post=178842"}],"version-history":[{"count":4,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/178842\/revisions"}],"predecessor-version":[{"id":219136,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/178842\/revisions\/219136"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/media\/218376"}],"wp:attachment":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/media?parent=178842"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/categories?post=178842"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}