特徴量の作成をdef関数等で済ませ、それをtrainとtestに当てはめる等
これが良いと思います。
concatした後、いざmodelにfitさせる段階でconcatしたものを再度
trainデータとtestデータに分ける方法が分かりません、、、、
上記の方法(共通の前処理や特徴量抽出を関数にする方法)が良いと思いますが、何らかの都合によりこちらでやるなら、データフレーム (pd.DataFrame
) にtestデータかどうかを表す列を追加して、これをもとに分けるのはどうでしょうか。
# train, testともにpd.DataFrame
train["is_test"] = False
test["is_test"] = True
# train, testを結合
train_and_test = pd.concat([train, test])
# 特徴抽出。抽出結果がデータフレームの列として追加される想定
train_and_test = extract_feature(train_and_test)
# 列is_testをもとに、trainとtestを取り出す
train_new = train_and_test[~train_and_test["is_test"]]
test_new = train_and_test[train_and_test["is_test"]]
特徴抽出の処理で行数や行の並びが変わらないなら、trainとtestそれぞれの行番号をもとに取り出してもいいですね。
Like!