5
我正在做一個機器學習計算,它有兩個數據幀 - 一個用於因子,另一個用於目標值。我必須將它們分成訓練和測試部分。在我看來,我已經找到了方法,但我正在尋找更優雅的解決方案。這裏是我的代碼:以同樣的方式採樣兩個熊貓數據幀
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)
----編輯 - 由unutbu溶液(midified)---
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]
感謝名單!因爲我必須使用一些百分位數,所以我修改了以行開始的行= ... –
在這種情況下,您可以使用'rows = np.random.binomial(1,percentile * 100,size = len(df_source)) '。 – unutbu
是的,它的工作,thanx –