機械翻訳について

空間パイプライン

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