我正在进行机器学习计算,有两个数据帧 - 一个用于因子,另一个用于目标值。我必须将两者分为训练和测试部分。在我看来,我已经找到了方法,但我正在寻找更优雅的解决方案。这是我的代码:
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)
---- 编辑 - 按单位解决方案(修改)---
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]
您可以在下面找到我的解决方案,它不涉及任何额外的变量。
- Use
.sample
获取数据样本的方法
- Use
.index
样本方法,获取索引
- Apply
slice()
按索引查找第二个dataframe
例如。
假设您有 X 和 Y,并且您希望每个都获得 10 件样品。当然,它应该是相同的样本
X_sample = X.sample(10)
y_sample = y[X_sample.index]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)