空間ラグ変圧器
特定のフィーチャの空間ラグは、各観察の周囲の近傍におけるそのフィーチャの平均値を反映します。
たとえば、特定の地域では、住宅価格の空間ラグは、特定の家やロケーションを囲む平均住宅価格です。 これは、機械学習モデルのトレーニングに直接使用できる空間ラグ値を計算するフィーチャ・エンジニアリング・メソッドです。
SpatialLagTransformer
クラスは、トレーニング・データの空間ラグを計算し、観測値をその空間ラグに変更します。 言い換えると、観察の値は近傍の平均値に変更されます。
SpatialLagTransformer
のインスタンスを作成するには、隣接するロケーション間の関係を確立するspatial_weights_definition
パラメータを定義する必要があります。
次の表で、クラスの主なメソッドについて説明します。
メソッド | 説明 |
---|---|
fit |
トレーニング・セットのすべての機能の空間ラグを計算します。 |
transform |
use_fit_lag パラメータに応じて空間ラグ値を変更します。 use_fit_lag=True の場合、トレーニング・セットから空間ラグが計算されます。 それ以外の場合は、transform メソッドに渡されるデータから空間ラグを計算します。 この関数は、NumPy配列を返します。
|
fit_transform |
トレーニング・データとともに、fit およびtransform メソッドを順番にコールします。
|
詳細は、「Oracle Spatial AI Python APIリファレンス」のSpatialLagTransformerクラスを参照してください。
次の例では、block_groups
SpatialDataFrame
およびSpatialLagTransformer
メソッドを使用して、MEAN_AGE
およびHOUSE_VALUE
機能の値を変更し、それらの空間ラグ値を決定します。 MEDIAN_INCOME
機能は、ターゲット変数として定義されているため無視されます。 geometry
機能は空間ラグの計算に使用されますが、トランスフォーマからの出力には含まれません。
from oraclesai.weights import KNNWeightsDefinition
from oraclesai.preprocessing import SpatialLagTransformer
# Define the variables
X = block_groups[["MEDIAN_INCOME", "MEAN_AGE", "HOUSE_VALUE", "geometry"]]
# Print original data
print(f">> Original data:\n {X[['MEAN_AGE', 'HOUSE_VALUE']].get_values()[:5]}")
# Define spatial weights
weights_definition = KNNWeightsDefinition(k=5)
# Create an instance of SpatialLagTransformer
spatial_lag_transformer = SpatialLagTransformer(spatial_weights_definition=weights_definition)
# Print the transformed data
X_spatial_lag = spatial_lag_transformer.fit_transform(X, y="MEDIAN_INCOME", geometries="geometry")
print(f"\n>> Transformed data:\n {X_spatial_lag[:5, :]}")
結果の出力は、MEAN_AGE
およびHOUSE_VALUE
の空間ラグを持つNumPy配列です。
>> Original data:
[[4.75847626e+01 4.56300000e+05]
[3.88231812e+01 8.36300000e+05]
[4.78076096e+01 1.12630000e+06]
[4.65636330e+01 9.60400000e+05]
[5.11550865e+01 1.01090000e+06]]
>> Transformed data:
[[4.03809292e+01 6.23460000e+05]
[3.95882790e+01 8.20100000e+05]
[4.69466225e+01 1.22280000e+06]
[4.25439751e+01 1.04664000e+06]
[4.43390564e+01 1.14368000e+06]]