如何实现不指定名称的动态目标变量Train-Test数据集拆分?
解决动态指定目标变量的数据集拆分问题
我看到你想要实现一个能动态指定目标变量的数据集拆分函数,避免硬编码Survived,同时你的现有代码存在几个小问题,我来帮你修正并优化:
现有代码的核心问题
- 函数名
train_test_split和sklearn自带的拆分函数重名了,这会导致递归调用错误(你的函数内部又调用了同名函数); - 获取目标变量的语法错误:
y=d.target是错误的Pandas列引用方式,应该用d[target]或者d.loc[:, target]; - 目标变量是硬编码的,无法动态传入自定义的列名。
优化后的代码方案
我们可以修改函数名避免冲突,同时添加target参数来支持动态指定目标变量,还可以给它设置默认值保持原有逻辑:
from sklearn.model_selection import train_test_split def custom_train_test_split(d, target='Survived'): # 分离特征矩阵和目标变量 X = d.drop(target, axis=1) y = d[target] # 正确的DataFrame列引用方式 # 调用sklearn的拆分函数(函数名不重名,不会触发递归) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33) return X_train, X_test, y_train, y_test
使用示例
- 使用默认目标变量
Survived:
# 假设df是你的数据集 X_train, X_test, y_train, y_test = custom_train_test_split(df)
- 动态指定其他目标变量(比如
Fare):
X_train, X_test, y_train, y_test = custom_train_test_split(df, target='Fare')
这样就完美实现了无需硬编码目标变量的动态拆分需求啦!
内容的提问来源于stack exchange,提问作者mounika M
相关产品推荐
相关产品推荐

