如何在Sklearn管道中进行Onehotencoding
发布时间:2020-05-23 11:17:40 所属栏目:程序设计 来源:互联网
导读:我正在尝试oneHotEncode我的Pandas数据帧的分类变量,其中包括分类和连续变量.我意识到这可以通过pandas .get_dummies()函数轻松完成,但我需要使用管道,以便稍后我可以生成PMML文件. 这是创建映射器的代码.我想编码的分类变量存储在名为“dummies”的列表中. f
|
我正在尝试oneHotEncode我的Pandas数据帧的分类变量,其中包括分类和连续变量.我意识到这可以通过pandas .get_dummies()函数轻松完成,但我需要使用管道,以便稍后我可以生成PMML文件. 这是创建映射器的代码.我想编码的分类变量存储在名为“dummies”的列表中. from sklearn_pandas import DataFrameMapper
from sklearn.preprocessing import OneHotEncoder
from sklearn.preprocessing import LabelEncoder
mapper = DataFrameMapper(
[(d,LabelEncoder()) for d in dummies] +
[(d,OneHotEncoder()) for d in dummies]
)
这是创建管道的代码,包括映射器和线性回归. from sklearn2pmml import PMMLPipeline
from sklearn.linear_model import LinearRegression
lm = PMMLPipeline([("mapper",mapper),("regressor",LinearRegression())])
当我现在尝试拟合(‘features’是一个数据帧,并且’目标’是一个系列)时,它会给出一个错误’无法将字符串转换为浮点数’. lm.fit(features,targets) 谁可以帮助我?我非常渴望工作管道,包括数据的预处理……提前谢谢! OneHotEncoder不支持字符串功能,而[d,OneHotEncoder())用于d in dummies]你将它应用于所有虚拟列.请改用LabelBinarizer:mapper = DataFrameMapper(
[(d,LabelBinarizer()) for d in dummies]
)
另一种方法是使用LabelEncoder和第二个OneHotEncoder步骤. mapper = DataFrameMapper(
[(d,LabelEncoder()) for d in dummies]
)
lm = PMMLPipeline([("mapper",("onehot" OnehotEncoder()),LinearRegression())]) (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
