【发布时间】:2021-01-28 17:19:59
【问题描述】:
我想为 Pyspark 创建 sklearn 的 train_test_split 函数。我正在使用 pandas udf 来创建这个函数
这就是我所做的。
@pandas_udf(schema, PandasUDFType.GROUPED_MAP)
def load_dataset(dataset):
feature_columns = cols
label = 'y';
X = dataset[feature_columns]
Y = dataset[label]
# splitting the dataset into train and test
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.2)
print(X_train)
return X_train, X_test, y_train, y_test
我想要这些数据帧 X_train、X_test、y_train、y_test 分开。
我知道udf函数是这样调用的
df.groupby("key").apply(load_dataset).show()
但我不知道用什么代替
key
另外,这会返回单个数据帧,我想要四个。
【问题讨论】:
-
我 100% 确定 pyspark 已经有这个功能了。
-
如果你只是想分割你的数据框,你可以使用randomSplit
-
但是我不想使用randomsplit,实际上我想在Pyspark中使用sklearn的train_test_split函数。
-
你能给我推荐那个链接吗? @约翰螺柱
-
据我所知,pandas_udf 无法做到这一点。您不能返回 4 个 Spark 数据帧。请阅读文档Pandas Function APIs。
标签: python pandas pyspark scikit-learn user-defined-functions