当前位置: 首页 > news >正文

AI一点通:使用 ColumnTransformer 转换 Pandas DataFrame 的一个或多个列

在处理表格数据时,常常需要对一个或多个列进行转换以使它们更适合于分析或建模。在许多情况下,可以使用 Pandas 库轻松完成这些转换。然而,在处理大型数据集或构建机器学习管道时,使用 scikit-learn 的 ColumnTransformer 类来将转换应用于数据的特定列可能更有效。

这里,我们将演示如何使用自定义转换器与 scikit-learn 的 ColumnTransformer 来转换 Pandas DataFrame 的一个或多个列。

示例1:转换 NumPy 数组

让我们从一个简单的示例开始,我们有一个具有三个列的 NumPy 数组,并且我们希望将前两列转换为两个新列。

import numpy as np
from sklearn.base import BaseEstimator, TransformerMixin
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipelineclass CustomTransformer(BaseEstimator, TransformerMixin):def __init__(self):passdef transform(self, X):# 这里,X 是一个二维的 NumPy 数组或 Pandas DataFrame# 将第0列和第1列转换成多列transformed_cols = np.column_stack([X[:, 0]**2, np.sqrt(X[:, 1])])# 将转换后的列作为二维 NumPy 数组返回return transformed_colsdef fit(self, X, y=None):return self# 示例用法
X = np.array([[1, 4, 7], [2, 9, 8], [3, 16, 9]])
transformer = ColumnTransformer(transformers=[('custom', CustomTransformer(), [0, 1])],remainder='passthrough')
# 'remainder' 参数保留未转换的任何列
transformed_X = transformer.fit_transform(X)
print(transformed_X)

在这个例子中,CustomTransformer 类接受两个输入列并将它们转换为两个输出列。ColumnTransformer 将这个转换器应用到输入数据的第0列和第1列,并保留第2列。“passthrough” 选项被用来保留其原始形式的其余列。

示例2:转换 Pandas DataFrames

现在,让我们修改之前的示例,使其适用于 Pandas DataFrame 而不是 NumPy 数组。

import pandas as pd
from sklearn.base import BaseEstimator, TransformerMixin
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipelineclass CustomTransformer(BaseEstimator, TransformerMixin):def __init__(self):passdef transform(self, X):# Here, X is a pandas DataFrame# Transform columns 'A' and 'B' into multiple columnstransformed_cols = pd.DataFrame({'A_squared': X['A']**2, 'B_sqrt': X['B']**0.5})# Return the transformed columns as a pandas DataFramereturn transformed_colsdef fit(self, X, y=None):return self# Example usage
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 9, 16], 'C': [7, 8, 9]})
transformer = ColumnTransformer(transformers=[('custom', CustomTransformer(), ['A', 'B'])], remainder='passthrough')
# The 'remainder' parameter preserves any columns not transformed
transformed_df = transformer.fit_transform(df)
print(transformed_df)

在此示例中,CustomTransformer 类采用两个输入列(“A”和“B”)并将它们转换为 pandas DataFrame 中的两个输出列(“A_squared”和“B_sqrt”)。 ColumnTransformer 将此转换器应用于输入数据的“A”列和“B”列,并保留“C”列。 “passthrough”选项已用于以其原始形式保留剩余的列“C”。

英文链接

英文版

最后的话

AI日新月异,但是万丈高楼拔地起,离不开良好的基础。您是否有兴趣了解人工智能的原理和实践? 不要再观望! 我们关于 AI 原则和实践的书是任何想要深入了解 AI 世界的人的完美资源。 由该领域的领先专家撰写,这本综合指南涵盖了从机器学习的基础知识到构建智能系统的高级技术的所有内容。 无论您是初学者还是经验丰富的 AI 从业者,本书都能满足您的需求。 那为什么还要等? 立即下单,开始以一种易于访问、引人入胜且实用的方式学习 AI。

人工智能原理与实践 全面涵盖人工智能和数据科学各个重要体系经典

北大出版社,人工智能原理与实践 人工智能和数据科学从入门到精通 详解机器学习深度学习算法原理

http://www.lryc.cn/news/8311.html

相关文章:

  • 【C语言】全局变量、局部变量和静态变量的区别
  • 血氧仪「上潜」,智能穿戴「下沉」
  • CPP2022-计算机类-期末考试
  • 【蓝桥集训】第二天——差分
  • Spring Boot最核心的27个注解,你了解多少?
  • css3弹性盒子
  • 数据分析与SAS学习笔记2
  • 零信任-Akamai零信任介绍(6)
  • 表现良好的最长时段[前缀和思想子数组]
  • Python 获取当前系统时间
  • pytorch基础入门教程
  • RTSP协议交互时TCP/UDP的区别 以及视频和音频的区别 以及H264/H265的区别
  • 调用大智慧L2接口是什么原理?作用是什么?
  • 数据结构 - 栈 与 队列 - (java)
  • CellularAutomata元胞向量机-8-渗流集群MATLAB代码分享
  • iOS UI自动化测试详解
  • Mybatis源码分析(九)Mybatis的PreparedStatement
  • winfrom ui
  • 中国国家级地面气象站基本气象要素日值数据集(V3.0)
  • 【Python语言基础】——Python NumPy 数组副本 vs 视图
  • Spring Cloud_OpenFeign服务接口调用
  • 十三、GIO GTask
  • ch4_1存储器
  • Doris通过Flink CDC接入MySQL实战
  • 搭建zookeeper高可用集群详细步骤
  • Scala 变量和数据类型(第二章)
  • 【JVM基础内容速查表】JVM基础知识 默认参数 GC命令 工具使用 JVM参数设置、说明、使用方法、注意事项等(持续更新)
  • C语言经典编程题100例(61~80)
  • toxssin:一款功能强大的XSS漏洞扫描利用和Payload生成工具
  • Keepalived与HaProxy的协调合作原理分析