ホームページ > 記事 > テクノロジー周辺機器 > Featuretools を使用して自動特徴量エンジニアリングを実装する
Featuretools は、自動特徴量エンジニアリング用の Python ライブラリです。特徴エンジニアリング プロセスを簡素化し、機械学習モデルのパフォーマンスを向上させることを目的としています。このライブラリは生データから有用な特徴を自動的に抽出できるため、ユーザーはモデルの精度を向上させながら時間と労力を節約できます。
Featuretools を使用して特徴エンジニアリングを自動化する方法の手順は次のとおりです:
Featuretools を使用する前に、データ セットを準備する必要があります。データセットは Pandas DataFrame 形式である必要があり、各行が観測値を表し、各列が特徴を表します。分類および回帰問題の場合、データ セットにはターゲット変数が含まれている必要がありますが、クラスタリング問題の場合、データ セットにターゲット変数は必要ありません。したがって、Featuretools を使用する場合は、特徴エンジニアリングと特徴生成を効率的に実行できるように、データセットがこれらの要件を満たしていることを確認してください。
Featuretools を特徴量エンジニアリングに使用する場合は、最初にエンティティと関係を定義する必要があります。エンティティは、関連する特性のセットを含むデータ セットのサブセットです。たとえば、電子商取引 Web サイトでは、注文、ユーザー、製品、支払いなどを別のエンティティとして扱うことができます。関係とはエンティティ間のつながりであり、たとえば、注文がユーザーに関連付けられたり、ユーザーが複数の製品を購入したりする場合があります。エンティティと関係を明確に定義することで、データ セットの構造をより深く理解できるようになり、特徴の生成とデータ分析が容易になります。
Featuretools を使用して、エンティティと関係を定義してエンティティ セットを作成できます。エンティティ セットは、複数のエンティティのコレクションです。このステップでは、各エンティティの名前、データセット、インデックス、変数タイプ、タイムスタンプなどを定義する必要があります。たとえば、次のコードを使用して、注文エンティティとユーザー エンティティを含むエンティティ セットを作成できます。
import featuretools as ft # Create entity set es=ft.EntitySet(id='ecommerce') # Define entities orders=ft.Entity(id='orders',dataframe=orders_df,index='order_id',time_index='order_time') users=ft.Entity(id='users',dataframe=users_df,index='user_id') # Add entities to entity set es=es.entity_from_dataframe(entity_id='orders',dataframe=orders_df,index='order_id',time_index='order_time') es=es.entity_from_dataframe(entity_id='users',dataframe=users_df,index='user_id')
ここでは、EntitySet を使用して「」というエンティティを作成します。 ecommerce」エンティティ セットを作成し、エンティティを使用して注文とユーザーの 2 つのエンティティを定義します。注文エンティティの場合、注文 ID をインデックスとして指定し、注文時刻をタイムスタンプとして指定しました。ユーザー エンティティについては、インデックスとしてユーザー ID のみを指定しました。
このステップでは、エンティティ間の関係を定義する必要があります。フィーチャーツールを使用すると、エンティティ間の共有変数、タイムスタンプなどを通じて関係を定義できます。たとえば、電子商取引 Web サイトでは、各注文がユーザーに関連付けられます。注文とユーザーの間の関係は、次のコードを使用して定義できます。
# Define relationships r_order_user = ft.Relationship(orders['user_id'], users['user_id']) es = es.add_relationship(r_order_user)
ここでは、Relationship を使用して注文とユーザーの間の関係を定義し、add_relationship を使用してそれらをエンティティ セットに追加しました。
上記のステップを完了すると、Featuretools の深部特徴合成アルゴリズムを使用して、フィーチャーを自動的に生成します。このアルゴリズムは、集計、変換、組み合わせなどの新しい機能を自動的に作成します。次のコードを使用して、深部特徴合成アルゴリズムを実行できます:
# Run deep feature synthesis algorithm features, feature_names = ft.dfs(entityset=es, target_entity='orders', max_depth=2)
ここでは、dfs 関数を使用して深部特徴合成アルゴリズムを実行し、ターゲット エンティティを順序エンティティとして指定し、最大深度を設定します。 2へ。この関数は、新しい機能と機能名のリストを含む DataFrame を返します。
新しい機能を取得したら、それらを使用して機械学習モデルをトレーニングできます。次のコードを使用して、元のデータセットに新しい特徴を追加できます:
# Add new features to original dataset df=pd.merge(orders_df,features,left_on='order_id',right_on='order_id')
ここでは、マージ関数を使用して、トレーニングとテストのために元のデータセットに新しい特徴を追加します。その後、新しい機能を使用して機械学習モデルをトレーニングできます。例:
# Split dataset into train and test sets X_train, X_test, y_train, y_test = train_test_split(df[feature_names], df['target'], test_size=0.2, random_state=42) # Train machine learning model model = RandomForestClassifier() model.fit(X_train, y_train) # Evaluate model performance y_pred = model.predict(X_test) accuracy_score(y_test, y_pred)
ここでは、ランダム フォレスト分類器を機械学習モデルとして使用し、トレーニング セットを使用してモデルをトレーニングします。次に、テスト セットを使用して、精度を評価指標として使用してモデルのパフォーマンスを評価します。
Featuretools を使用して特徴エンジニアリングを自動化する手順には、データの準備、エンティティと関係の定義、エンティティ セットの作成、関係の定義が含まれます。 、ディープ特徴合成アルゴリズムとモデル構築を実行します。 Featuretools は生データから有用な特徴を自動的に抽出できるため、ユーザーは時間と労力を大幅に節約し、機械学習モデルのパフォーマンスを向上させることができます。
以上がFeaturetools を使用して自動特徴量エンジニアリングを実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。