当前位置: 首页 > 面试题库 >

sklearn管道-如何在不同的列上应用不同的转换

戚建白
2023-03-14
问题内容

我对sklearn中的管道还很陌生,并且遇到了这个问题:我有一个包含文本和数字混合的数据集,即某些列仅包含文本,其余的列具有整数(或浮点数)。

我想知道是否有可能建立一个管道,例如我可以调用LabelEncoder()文本功能和MinMaxScaler()数字列。我在网上看到的示例大多指向LabelEncoder()在整个数据集而不是在选择列上使用。这可能吗?如果是这样,任何指针将不胜感激。


问题答案:

我通常的做法是使用FeatureUnion,使用aFunctionTransformer拉出相关的列。

重要笔记:

  • 您必须使用来定义函数,def因为令人讨厌的是您无法使用,lambda或者partial如果要腌制模型,请在FunctionTransformer中定义

  • 您需要初始化FunctionTransformervalidate=False

像这样:

from sklearn.pipeline import make_union, make_pipeline
from sklearn.preprocessing import FunctionTransformer

def get_text_cols(df):
    return df[['name', 'fruit']]

def get_num_cols(df):
    return df[['height','age']]

vec = make_union(*[
    make_pipeline(FunctionTransformer(get_text_cols, validate=False), LabelEncoder()))),
    make_pipeline(FunctionTransformer(get_num_cols, validate=False), MinMaxScaler())))
])


 类似资料:
  • 问题内容: 有一个令人毛骨悚然的项目,其中包含多个spider。我有什么方法可以定义为哪个spider使用哪个管道?并非我定义的所有管道都适用于每个spider。 问题答案: 在Pablo Hoffman的解决方案的基础上,你可以在对象的方法上使用以下装饰器,以便它检查你的Spider属性是否应执行。例如: 为了使此装饰器正常工作,蜘蛛程序必须具有管道属性,其中包含要用于处理项目的管道对象的容器,

  • 我很难理解RabbitMQ的基本概念。我发现在线文档并不十分清楚。 到目前为止,我理解了什么是通道、队列、绑定等。 但如何实现以下用例: 用例:发件人以不同的主题发布到一个交易所。在接收者方面,根据主题,应该通知不同的接收者。 因此,通过主题交换,以下内容应该是可行的: 创建频道 我的困难在于回调与通道相关,而与队列或队列绑定无关。我不能百分之百确定我是否在这里。 这就是我的问题:为了有多个回调,

  • 我试图在jenkins管道中的不同节点上运行不同的阶段,比如第一阶段是签出,第二阶段是构建,第三阶段是单元测试。例如: 如果我尝试这样做,我的问题是如果我在Linux1节点中签出代码,那么当签出的代码在node1中时,为什么其他阶段可以在不同的节点中运行。 代码将如何分布,如果我的理解不正确,我如何实现并行,并确保每个阶段都可以并行并减少时间。 如果可能,请推荐任何用于编写Jenkins管道的gr

  • 我有一个管道脚本,如下所示: ${build_type}可以是“发布”或“调试”。 当我的构建收到触发器时,我希望我的管道为${build_type}中的每个参数运行一次,然后向我发送一封电子邮件,其中包含有关两个构建的报告。 我怎样才能做到这一点? 我试图在编译阶段内定义一个并行块,并在那里设置build_type,但这并不能使其他阶段并行运行。

  • 问题内容: 我有一个表,定义如下: 我的基本选择语句是: 如何按索引升序和日期降序对选择进行排序?即小索引先于大索引。如果两个索引相同,则以较晚的日期为准。 文档将我指向COLLATion,但是我不确定那是什么。 问题答案: 虽然我知道您已经在这里有了自己的答案,但我认为在这里工作的细节很重要。 首先,该子句按指定的列或表达式的顺序排列。在这种情况下: 从小到大(结尾), 然后 从大到小(结尾)排

  • 问题内容: 我有这样的CSS声明: 这里的font1是嵌入式的eot / ttf字体,但问题是该字体比其他字体要小,所以我想为此字体(font1)使用不同的字体大小(1.8em)。所有其他字体(font2,font3)保持不变。 问题是,我无法验证用户的浏览器是使用font1,font2还是font3。是否有任何CSS声明允许不同家族使用不同的字体大小? 谢谢。 问题答案: 这里 是 一个办法做到