Spatial Feature Union

The SpatialFeatureUnion estimator shares spatial properties with multiple transformers and concatenates the results.

The following table describes the main methods of the SpatialFeatureUnion class.

Method Description
fit Calls the fit method of all the transformers.
transform Calls the transform method of each transformer and concatenate the results.
fit_transform Fits all the transformers, transforms the data, and concatenates the results.

See the SpatialFeatureUnion class in Python API Reference for Oracle Spatial AI for more information.

The following example uses the block_groups SpatialDataFrame and SpatialFeatureUnion to concatenate the output from two transformers. The first is a SimpleImputer from scikit-learn, and the second is a SpatialLagTransformer. The dataset has three columns, excluding the geometries, so the final result contains six columns.

from oraclesai.pipeline import SpatialFeatureUnion
from oraclesai.weights import KNNWeightsDefinition
from oraclesai.preprocessing import SpatialLagTransformer
from sklearn.impute import SimpleImputer
 
# Define training variables
X = block_groups[['MEAN_AGE', 'HOUSE_VALUE', "MEDIAN_INCOME", "geometry"]]
 
# Print X
print("=========================== X =================================")
print(X.get_values()[:5,:])
 
# Define spatial weights
weights_definition = KNNWeightsDefinition(k=5)
 
# Define a Spatial Lag Transformer
spatial_lag_transformer = SpatialLagTransformer(spatial_weights_definition=weights_definition)
 
# Use SpatialFeatureUnion to concatenate the output from all the transformers
slag_feature_union = SpatialFeatureUnion([("imputer", SimpleImputer()),
                                          ("spatial_lag", spatial_lag_transformer)])
 
# Print the final result
print("\n=================== X transformed ============================")
print(slag_feature_union.fit_transform(X)[:5, :])

The first three columns of the transformed data represent the output from the SpatialImputer, and the other three represent the output from the SpatialLagTransformer.

=========================== X =================================
[[4.75847626e+01 4.56300000e+05 5.38280000e+04]
 [3.88231812e+01 8.36300000e+05 6.07240000e+04]
 [4.78076096e+01 1.12630000e+06 8.25380000e+04]
 [4.65636330e+01 9.60400000e+05 1.43661000e+05]
 [5.11550865e+01 1.01090000e+06 1.23977000e+05]]

=================== X transformed ============================
[[4.75847626e+01 4.56300000e+05 5.38280000e+04 4.03809292e+01
  6.23460000e+05 7.92068000e+04]
 [3.88231812e+01 8.36300000e+05 6.07240000e+04 3.95882790e+01
  8.20100000e+05 9.82008000e+04]
 [4.78076096e+01 1.12630000e+06 8.25380000e+04 4.69466225e+01
  1.22280000e+06 1.14899600e+05]
 [4.65636330e+01 9.60400000e+05 1.43661000e+05 4.25439751e+01
  1.04664000e+06 1.16867800e+05]
 [5.11550865e+01 1.01090000e+06 1.23977000e+05 4.43390564e+01
  1.14368000e+06 1.45833400e+05]]