gpt4 book ai didi

python - One-Hot 编码训练和测试数据时形状不匹配。将 get_dummies 与管道一起使用时,Train_Data 比 Test_data 具有更多的虚拟列

转载 作者:太空宇宙 更新时间:2023-11-03 21:18:37 27 4
gpt4 key购买 nike

我正在尝试为我的数据创建一个 get_dummies 类,稍后我想在管道中使用它:

class Dummies(BaseEstimator, TransformerMixin):
def transform(self, df):
dummies=pd.get_dummies(df[self.cat],drop_first=True) ## getting dummy cols
df=pd.concat([df,dummies],axis=1) ## concatenating our dummies
df.drop(self.cat,axis=1,inplace=True) ## dropping our original cat_cols

def fit(self, df):
self.cat=[]
for i in df.columns.tolist():
if i[0]=='c': ## My data has categorical cols start with 'c'
self.cat.append(i) ## Storing all my categorical_columns for dummies
else:
continue

现在,当我在 X_train 上调用 fit_transform ,然后转换 X_test

z=Dummies()
X_train=z.fit_transform(X_train)
X_test=z.transform(X_test)

X_train 和 X_test 的列形状不同:

X_train.shape
X_test.shape

输出:

(10983、1797)(3661, 1529)

X_train 中的虚拟人比我的 X_test 中的多。显然,我的 X_test 的类别比 X_train 少。如何在我的类中编写逻辑,以便 X_test 中的类别广播到 X_train 的形状?我希望 X_test 具有与 X_train 相同数量的虚拟变量。

最佳答案

您可以附加两个数据帧,然后执行 get_dummies()。

关于python - One-Hot 编码训练和测试数据时形状不匹配。将 get_dummies 与管道一起使用时,Train_Data 比 Test_data 具有更多的虚拟列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54495765/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com