機械翻訳について

空間計算機

SpatialImputerクラスを使用すると、ネイバーのデータを使用して観測の欠落値を埋めることができます。

トブラーの法則によれば、遠いものよりも近いものが関係しています。 そのため、空間重みを利用して欠落値をコンピュートすることが目標です。

次の表に、SpatialImputerクラスのパラメータを示します。

パラメータ 説明
spatial_weights_definition 近隣のロケーション間の関係を定義します。 隣人から情報を取得する必要があります。
missing_values missing_valuesのすべての出現がインプットされます
strategy デフォルトでは、SpatialImputerは" mean"を使用して欠落値を入力します。 つまり、隣接する観測値からの加重平均によって、欠落した値が置き換えられます。 その他のオプションは、「中央値」maximum、およびminimumです。

SpatialImputerクラスはトランスフォーマで、その主なメソッドを次の表に示します。

メソッド 説明
fit トレーニング・データから空間ラグを計算します。
transform 指定されたstrategyに従って渡されるデータ・パラメータを持つNumPy配列を返します。 use_fit_lagパラメータを定義して、トレーニング・セットからネイバーを使用するかどうかを決定します。
fit_transform トレーニング・データを使用して、fitおよびtransformメソッドを順番にコールします。

詳細は、「Oracle Spatial AI Python APIリファレンス」SpatialImputerクラスを参照してください。

次の例では、前に作成したblock_groups SpatialDataFrameを使用して、次のことを実行します:

  1. INTERNET列に欠落値を追加します。
  2. K-Nearest Neighborsメソッドを使用して、空間ウェイトを定義します。
  3. SpatialImputerのfit_transformメソッドをコールして、トレーニング・セットの欠損値を入力します。

ターゲット列( MEDIAN_INCOME)および列ジオメトリは、出力の一部ではないことに注意してください。

import random
import numpy as np 
from oraclesai import GeoDataFrameDataset 
from oraclesai.preprocessing import SpatialImputer 
from oraclesai.weights import KNNWeightsDefinition 

random.seed(32) 
block_groups_missing_df = block_groups.as_geodataframe() 

# Assign missing values randomly to the internet column 
ix = [row for row in range(block_groups.shape[0])] 
for row in random.sample(ix, int(round(.1*len(ix)))): 
    block_groups_missing_df.loc[row, "INTERNET"] = np.nan 

# Create a SpatialDataFrame with the data containing missing values 
block_groups_missing_pdf = SpatialDataFrame.create(GeoDataFrameDataset(block_groups_missing_df)) 

# Define the variables of the model 
X = block_groups_missing_pdf[["MEDIAN_INCOME", "MEAN_AGE", "HOUSE_VALUE", "INTERNET", "geometry"]] 

# Define the spatial weights 
weights_definition = KNNWeightsDefinition(k=10) 

# Print the total number of missing values 
print(f"Missing Values Before Imputation = {np.sum(np.isnan(X.get_values()))}") 

# Create an instance of SpatialImputer 
spatial_imputer = SpatialImputer(missing_values=np.nan, spatial_weights_definition=weights_definition) 

# Fill the missing values of the training data 
X_imputed = spatial_imputer.fit_transform(X, y="MEDIAN_INCOME") 

# Print the total number of missing values (0 is expected) 
print(f"Missing Values After Imputation = {np.sum(np.isnan(X_imputed))}")

結果の出力には、インピュテーションの前後の欠落値の数が表示されます。

Missing Values Before Imputation = 344
Missing Values After Imputation = 0