AI Made Easy: ColumnTransformer を使用して、Pandas DataFrame の 1 つ以上の列を変換します

表形式のデータを操作する場合、多くの場合、1 つまたは複数の列を変換して、分析やモデリングにより適したものにする必要があります。多くの場合、これらの変換は Pandas ライブラリを使用して簡単に実行できます。ただし、大規模なデータセットを操作したり、機械学習パイプラインを構築したりする場合は、scikit-learn のColumnTransformerクラスを使用してデータの特定の列に変換を適用する方が効率的な場合があります。

ここでは、scikit-learn の ColumnTransformer でカスタム トランスフォーマーを使用して、Pandas DataFrame の 1 つ以上の列を変換する方法を示します。

例 1: NumPy 配列の変換

簡単な例から始めましょう。3 つの列を持つ NumPy 配列があり、最初の 2 つの列を 2 つの新しい列に変換したいと考えています。

import numpy as np
from sklearn.base import BaseEstimator, TransformerMixin
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipeline

class CustomTransformer(BaseEstimator, TransformerMixin):
    def __init__(self):
        pass
    
    def transform(self, X):
        # 这里,X 是一个二维的 NumPy 数组或 Pandas DataFrame
        # 将第0列和第1列转换成多列
        transformed_cols = np.column_stack([X[:, 0]**2, np.sqrt(X[:, 1])])
        # 将转换后的列作为二维 NumPy 数组返回
        return transformed_cols
    
    def 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 クラスは 2 つの入力列を取り、それらを 2 つの出力列に変換します。ColumnTransformer は、このトランスフォーマーを入力データの列 0 と 1 に適用し、列 2 を保持します。「パススルー」オプションは、残りの列を元の形式で保持するために使用されます。

例 2: Pandas DataFrame の変換

ここで、前の例を変更して、NumPy 配列の代わりに Pandas DataFrame を操作できるようにしましょう。

import pandas as pd
from sklearn.base import BaseEstimator, TransformerMixin
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipeline

class CustomTransformer(BaseEstimator, TransformerMixin):
    def __init__(self):
        pass
    
    def transform(self, X):
        # Here, X is a pandas DataFrame
        # Transform columns 'A' and 'B' into multiple columns
        transformed_cols = pd.DataFrame({'A_squared': X['A']**2, 
                                         'B_sqrt': X['B']**0.5})
        # Return the transformed columns as a pandas DataFrame
        return transformed_cols
    
    def 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 クラスは 2 つの入力列 (「A」と「B」) を取り、それらを pandas DataFrame の 2 つの出力列 (「A_squared」と「B_sqrt」) に変換します。ColumnTransformer は、このトランスフォーマーを入力データの列 "A" と "B" に適用し、列 "C" を残します。「パススルー」オプションは、残りの列「C」を元の形式で保持するために使用されています。

英語リンク

英文版

最後の言葉

AIは日々変化していますが、高層ビルは良い土台から切り離すことはできません。人工知能の原理と実践について学ぶことに興味がありますか? これ以上探さない!AI の原則と実践に関する私たちの本は、AI の世界への洞察を得ようとしている人にとって最適なリソースです。この分野の主要な専門家によって書かれたこの包括的なガイドは、機械学習の基本からインテリジェント システムを構築するための高度な手法まで、すべてをカバーしています。初心者でも経験豊富な AI 実践者でも、この本でカバーできます。では、なぜ待つのですか?今すぐ注文して、アクセスしやすく、魅力的で実用的な方法で AI について学び始めましょう。

人工知能の原理と実践は、人工知能とデータ科学のさまざまな重要なシステムの古典を包括的にカバーしています

北京大学出版局、人工知能の原則と実践 人工知能とデータ科学の入門から習熟まで 機械学習の深層学習アルゴリズムの原理の詳細な説明

Guess you like

Origin blog.csdn.net/robot_learner/article/details/129039588