Ich habe einen ziemlich großen Datensatz in Form eines Datenrahmens und frage mich, wie ich den Datenrahmen in zwei zufällige Stichproben (80% und 20%) für Training und Test aufteilen kann.
Vielen Dank!
Ich habe einen ziemlich großen Datensatz in Form eines Datenrahmens und frage mich, wie ich den Datenrahmen in zwei zufällige Stichproben (80% und 20%) für Training und Test aufteilen kann.
Vielen Dank!
Scikit Learns train_test_split
ist gut. Es wird sowohl numpy arrays als auch dataframes aufteilen.
from sklearn.model_selection import train_test_split
train, test = train_test_split(df, test_size=0.2)
Ich würde einfach randn
von numpy verwenden:
In [11]: df = pd.DataFrame(np.random.randn(100, 2))
In [12]: msk = np.random.rand(len(df)) < 0.8
In [13]: train = df[msk]
In [14]: test = df[~msk]
Und nur um zu sehen, ob das funktioniert hat:
In [15]: len(test)
Out[15]: 21
In [16]: len(train)
Out[16]: 79
Pandas Zufallsauswahl funktioniert auch
train=df.sample(frac=0.8,random_state=200)
test=df.drop(train.index)
Für denselben random_state
-Wert erhalten Sie immer die genau gleichen Daten im Trainings- und Testset. Dies bringt eine gewisse Wiederholbarkeit mit sich, während gleichzeitig Trainings- und Testdaten zufällig getrennt werden.
Ich würde scikit-learns eigene train_test_split-Funktion verwenden und sie aus dem Index generieren
from sklearn.model_selection import train_test_split
y = df.pop('output')
X = df
X_train, X_test, y_train, y_test = train_test_split(X.index, y, test_size=0.2)
X.iloc[X_train] # gibt das DataFrame für das Training zurück
Keine Notwendigkeit, in numpy zu konvertieren. Verwenden Sie einfach ein pandas df, um die Aufteilung durchzuführen, und es wird ein pandas df zurückgeben.
from sklearn.model_selection import train_test_split
train, test = train_test_split(df, test_size=0.2)
Und wenn Sie x von y trennen möchten
X_train, X_test, y_train, y_test = train_test_split(df[list_of_x_cols], df[y_col],test_size=0.2)
Und wenn Sie das gesamte df aufteilen möchten
X, y = df[list_of_x_cols], df[y_col]
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.