Ich mache eine Maschine lernen Berechnungen mit zwei Datenrahmen - eine für Faktoren und andere für die Zielwerte. Ich muss beides in Training und Test teilen. Es scheint mir, dass ich den Weg gefunden habe, aber ich suche eine elegantere Lösung. Hier ist mein Code:Sample zwei Pandas Datenrahmen auf die gleiche Weise
import pandas as pd
import numpy as np
import random
df_source = pd.DataFrame(np.random.randn(5,2),index = range(0,10,2), columns=list('AB'))
df_target = pd.DataFrame(np.random.randn(5,2),index = range(0,10,2), columns=list('CD'))
rows = np.asarray(random.sample(range(0, len(df_source)), 2))
df_source_train = df_source.iloc[rows]
df_source_test = df_source[~df_source.index.isin(df_source_train.index)]
df_target_train = df_target.iloc[rows]
df_target_test = df_target[~df_target.index.isin(df_target_train.index)]
print('rows')
print(rows)
print('source')
print(df_source)
print('source train')
print(df_source_train)
print('source_test')
print(df_source_test)
---- bearbeitet - Lösung von unutbu (midifizierte) ---
np.random.seed(2013)
percentile = .6
rows = np.random.binomial(1, percentile, size=len(df_source)).astype(bool)
df_source_train = df_source[rows]
df_source_test = df_source[~rows]
df_target_train = df_target[rows]
df_target_test = df_target[~rows]
thanx! Weil ich etwas Perzentil verwenden muss, habe ich die Zeile mit rows = ... geändert. –
In diesem Fall könnten Sie 'rows = np.random.binomial (1, Perzentil * 100, size = len (df_source)) verwenden. '. – unutbu
ja, es funktioniert, danke –