栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用ColumnTransformer进入管道时出现AttributeError

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用ColumnTransformer进入管道时出现AttributeError

ColumnTransformer
返回
numpy.array
,因此它不能具有列属性(如您的错误所示)。

如果我建议使用其他解决方案,将其

pandas
用于您的两个任务,将会更容易。

第1步-替换缺失值

要用

missing_value
字符串替换列子集中的缺失值,请使用以下命令:

dataframe[["PoolQC", "Alley"]].fillna("missing_value", inplace=True)

对于其余的(用每列的平均值进行插补),这将完美地工作:

dataframe[["Street", "MSZoning", "LandContour"]].fillna(    dataframe[["Street", "MSZoning", "LandContour"]].mean(), inplace=True)

第2步-一种热编码和分类变量

pandas
提供
get_dummies
,它返回的是熊猫Dataframe,而不同于
ColumnTransfomer
,代码如下:

enpred = pd.get_dummies(dataframe[['MSZoning', 'LandContour']], drop_first=True)pd.dropna(['MSZoning', 'LandContour'], axis=columns, inplace=True)dataframe = dataframe.join(enpred)

对于序数变量及其编码,我建议您看一下这个SO答案(不幸的是,在这种情况下,需要一些手动映射)。

如果仍然要使用变压器

np.array
使用
values
属性从数据框获取,通过管道传递它,然后从数组中重新创建列和索引,如下所示:

pd.Dataframe(data=your_array, index=np.arange(len(your_array)), columns=["A", "B"])

但是,这种方法有一个警告:您将不知道自定义创建的一键编码列的名称(管道不会为您完成此操作)。

另外,您可以从sklearn的转换对象中获取列的名称(例如,使用

categories_
属性),但我认为这会中断管道(如果我错了,请纠正我)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/634141.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号