注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
Copied!1 2 3 4 5
# foundry.transformsからDatasetをインポートする from foundry.transforms import Dataset # "training_data"という名前のデータセットを取得し、pandas形式のテーブルとして読み込む training_data = Dataset.get("training_data").read_table(format="pandas")
Copied!1 2 3 4 5 6 7 8
# training_dataからランダムに80%を選択して学習データとして設定します。ランダムの種は200に設定されています。 train_df = training_data.sample(frac=0.8,random_state=200) # 既に選択された学習データを削除し、残りの20%をテストデータとして設定します。 test_df = training_data.drop(train_df.index) # 学習データを表示します。 train_df
Copied!1 2 3 4 5 6 7 8
# foundry.transformsからDatasetをインポートします from foundry.transforms import Dataset # "housing_test_data"という名前のデータセットを取得します housing_test_data = Dataset.get("housing_test_data") # test_dfをテーブルとして書き出します housing_test_data.write_table(test_df)
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
from sklearn.impute import SimpleImputer from sklearn.linear_model import LinearRegression from sklearn.pipeline import Pipeline from sklearn.preprocessing import StandardScaler # 数値特徴量をリストに格納 numeric_features = ['median_income', 'housing_median_age', 'total_rooms'] # 数値データの前処理パイプライン numeric_transformer = Pipeline( steps=[ ("imputer", SimpleImputer(strategy="median")), # 欠損値の補完(中央値で補完) ("scaler", StandardScaler()) # 標準化 ] ) # モデルのパイプライン model = Pipeline( steps=[ ("preprocessor", numeric_transformer), # 前処理 ("classifier", LinearRegression()) # 線形回帰 ] ) X_train = train_df[numeric_features] y_train = train_df['median_house_value'] model.fit(X_train, y_train) # 学習 model
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
# palantir_modelsというライブラリをインポートします import palantir_models as pm # palantir_models_serializersからDillSerializerをインポートします from palantir_models_serializers import DillSerializer # LinearRegressionModelAdapterというクラスを定義します。このクラスはpm.ModelAdapterを継承しています class LinearRegressionModelAdapter(pm.ModelAdapter): # @pm.auto_serializeデコレータを利用してDillSerializerを用いたモデルのシリアライズを自動化します @pm.auto_serialize( model=DillSerializer() ) def __init__(self, model): # インスタンス変数としてモデルを保持します self.model = model # apiというクラスメソッドを定義します @classmethod def api(cls): # 入力となるデータフレームのカラム名とその型を定義します columns = [ ('median_income', float), ('housing_median_age', float), ('total_rooms', float), ] # 入力と出力のデータフレームの形式を定義し、それを返します return {"df_in": pm.Pandas(columns)}, \ {"df_out": pm.Pandas(columns + [('prediction', float)])} # predictというメソッドを定義します def predict(self, df_in): # 入力データフレームに'prediction'という新たなカラムを追加します。その値はモデルの予測結果とします df_in['prediction'] = self.model.predict( df_in[['median_income', 'housing_median_age', 'total_rooms']] ) # 予測値を含むデータフレームを返します return df_in