カテゴリ・ラグ変圧器
カテゴリ・ラグはカテゴリ変数に使用され、近所で最も一般的な値を表します。
たとえば、不動産タイプ(家、パート、タウン・ハウスなど)を表すフィーチャの場合、カテゴリ・ラグは周囲で最も一般的なプロパティです。
これは、機械学習モデルのトレーニングに直接使用できるカテゴリ・ラグ値を計算するフィーチャ・エンジニアリング・メソッドでもあります。 CategoricalLagTransformer
クラスは、特定のトレーニング・データのカテゴリ・ラグを計算し、そのカテゴリ・ラグの観測値を変更します。 近所で最も一般的な価値で観察の価値を変えます。
このクラスのインスタンスは、隣接する観測間の関係を定義するspatial_weights_definition
パラメータを取ります。
次の表で、クラスの主なメソッドについて説明します。
メソッド | 説明 |
---|---|
fit |
spatial_weights_definition パラメータおよびジオメトリ列に関連付けられたアルゴリズムを使用して、トレーニング・データの空間重みを計算します。
|
transform |
各ロケーションのネイバーから最も一般的な値を返します。 use_fit_lag パラメータを定義することで、メソッドはトレーニング・セットのネイバー、またはtransform メソッドに渡されるデータを使用できます。 出力はNumPy配列です。
|
fit_transform |
トレーニング・セットを使用して、fit およびtransform メソッドを順番にコールします。
|
詳細は、「Oracle Spatial AI Python APIリファレンス」のCategoricalLagTransformerクラスを参照してください。
次の例では、block_groups
SpatialDataFrame
およびCategoricalLagTransfomer
メソッドを使用して、対応するネイバーの最も一般的な値のINCOME_CLASS
機能から値を変換します。
INCOME_CLASS
列には4つのカテゴリがあります: High, Medium-High, Medium-Low, Low
。 これらは、特定の観察の収入レベルを表します。 ターゲット変数(MEDIAN_INCOME
)およびgeometry
列は、出力の一部ではありません。
from oraclesai.weights import KNNWeightsDefinition
from oraclesai.preprocessing import CategoricalLagTransformer
import pandas as pd
# Create a categorical variable based in the median income
labels=['Low', 'Medium-Low', 'Medium-High', 'High']
block_groups_extended = block_groups.add_column("INCOME_CLASS", pd.qcut(block_groups["MEDIAN_INCOME"].values, [0, 0.25, 0.5, 0.75, 1], labels=labels).tolist())
# Define the variables of the training data
X = block_groups_extended[["MEDIAN_INCOME", "INCOME_CLASS", "geometry"]]
print(f">> Original data:\n {X['INCOME_CLASS'].values[:10]}")
# Define the spatial weights
weights_definition = KNNWeightsDefinition(k=20)
# Create an instance of CategoricalLagTransformer
categorical_lag_transformer = CategoricalLagTransformer(weights_definition)
# Transforms the training data with the categorical lag
X_categorical_lag = categorical_lag_transformer.fit_transform(X, y='MEDIAN_INCOME', geometries='geometry')
# Displays the transformed data
print(f"\n>> Transformed data:\n {X_categorical_lag[:10, :]}")
結果の出力は、単一の列を含むNumPy配列で、INCOME_CLASS
列のカテゴリ・ラグを表します。 ターゲット変数( MEDIAN_INCOME
)とジオメトリの両方が出力の一部ではないことに注意してください。
>> Original data:
['Medium-Low' 'Medium-High' 'Medium-High' 'High' 'High' 'High' 'High'
'High' 'Medium-High' 'Medium-Low']
>> Transformed data:
[['High']
['High']
['High']
['High']
['High']
['High']
['High']
['Medium-High']
['Medium-High']
['Medium-High']]