sklearn
pipeline
sklearnのpipelineに自分で定義した関数を流し込む - Qiita
https://qiita.com/kazetof/items/fcfabfc3d737a8ff8668
data
train_test_splitのindex番号を記憶する方法
引数
indices
にindex番号を指定すればOK
X_train, X_test, Y_train, Y_test, indices_train, indices_test = train_test_split(X, Y, indices, test_size=0.33)
参考
https://qiita.com/haru1977/items/7aaf1eaeb0747fe613be
マルチラベルをバイナリエンコード
category encodersで対応できないので、scikit-learniでやる必要がある。
一つのセルに対して複数データがセットある状態が入力。
import pandas as pd
df = pd.DataFrame(
{"col1": [["aaa","bbb","ccc"], ["aaa"],["ccc","ddd"]]}
)
df

これを以下のコードでバイナリエンコード可能
from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer()
df = pd.DataFrame(mlb.fit_transform(df['col1']), columns=mlb.classes_)
df

StratifiedKFold
cross-validationで層分割する際に使用。戻ってくるのはindexのみ。
DataFrameを使う場合、このindexはpandasのindexではないので注意が必要。なのでiloc
でアクセスしないとハマる。
skf = StratifiedKFold(cv_split_num, random_state=42)
for train_index, valid_index in skf(feature_df, target_df):
X_train = feature_df.iloc[train_index]
y_train = target_df.iloc[train_index]
X_valid = feature_df.iloc[valid_index]
y_valid = target_df.iloc[valid_index]
# ...
Last updated