空間パイプライン
SpatialPipeline
クラスは、トランスフォーマ、その他のエスティメータおよび最終エスティメータのパイプラインを介して空間情報を共有します。
この場合、パイプラインの最終エスティメータ・ステップはオプションではありません。 一般的なシナリオは、データのクリーニング、欠損値の入力、データの標準化など、様々なタスクを担当する前処理パイプラインを持つことです。 その後、前処理パイプラインは、リプレッサまたは分類子のいずれかの最終エスティメータを持つ別のパイプラインの一部です。
次の表に、SpatialPipeline
クラスの主なメソッドを示します。
メソッド | 説明 |
---|---|
fit |
パイプライン・トランスフォーマのfit メソッドおよび最終エスティメータをコールします。
|
fit_predict |
パイプライン・トランスフォーマのfit メソッドとtransform メソッド、および最終エスティメータのfit メソッドとpredict メソッドをコールします。
|
predict |
パイプライン内のすべてのトランスフォーマのtransform メソッドをコールし、最終エスティメータのpredict メソッドをコールします。
|
詳細は、「Oracle Spatial AI Python APIリファレンス」のSpatialPipelineクラスを参照してください。
次の例では、block_groups
SpatialDataFrame
およびSpatialColumnTransformer
を使用して、特定の列の空間ラグを表す新しい列を作成するフィーチャ・エンジニアリング・ステップを定義します。 次に、フィーチャ・エンジニアリング・ステップがSpatialPipeline
に追加され、データを標準化する前処理ステップと、空間エラー回帰モデルで構成される最終エスティメータが追加されます。
from oraclesai.pipeline import SpatialColumnTransformer
from oraclesai.weights import KNNWeightsDefinition
from oraclesai.preprocessing import SpatialLagTransformer
from oraclesai.regression import SpatialErrorRegressor
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler
# Define target and explanatory variables
X = block_groups[["MEAN_AGE", "HOUSE_VALUE", "MEDIAN_INCOME", "geometry"]]
# Define spatial weights
weights_definition = KNNWeightsDefinition(k=10)
# Define a Spatial Lag Transformer
spatial_lag_transformer = SpatialLagTransformer(spatial_weights_definition=weights_definition)
# Create an instance of SpatialErrorRegressor
spatial_error_regressor = SpatialErrorRegressor(spatial_weights_definition=weights_definition)
# Use SpatialColumnTransformer to concatenate column subsets
feature_engineering_step = SpatialColumnTransformer([
("imputer", SimpleImputer(), ["MEAN_AGE", "HOUSE_VALUE"]),
("spatial_lag", spatial_lag_transformer, ["HOUSE_VALUE"])])
# Create a pipeline with three steps: Feature-Engineering, Scaler, Regressor
regression_pipeline = SpatialPipeline([
("feature_engineering", feature_engineering_step),
("scaler", StandardScaler()),
("regressor", spatial_error_regressor)
])
# Train the model
regression_pipeline.fit(X, y="MEDIAN_INCOME")
# Print the score of the training set
print(f"r2_score = {regression_pipeline.score(X, y='MEDIAN_INCOME')}")
出力は、最終エスティメータのR平方メトリックで構成されます。 この例では、score
メソッドをコールして、パイプライン内のすべてのトランスフォーマの変換メソッドを実行します。
r2_score = 0.5559292598577543