Python でDalexパッケージを使用して、バイナリ ロジット モデルの特定の特性を視覚化しようとしています。
ここのサンプルブックからコードの一部 (5 番目のコードセル全体) をコピーしました が、結果がどのように解釈されるべきかについてはよくわかりません...
を使用して作成した私の基本的なロジット モデルではstatsmodels
、多重共線性を回避するために、カテゴリごとに 1 つの参照レベル変数を手動で選択しました (これは、モデルからのすべての結果が参照レベルに関して解釈されることを意味します)。
しかし、上記のリンクからコードを使用すると (これもこの投稿の下にコピーされます)、最初に にパイプライン オブジェクトが作成されsklearn
、カテゴリ変数がワンホット エンコードされ、次にパイプライン オブジェクトがデータに適合され、説明するモデルとしての Dalex 説明者。
問題は、予測に対する変数のceteris paribusmodel_profile()
効果を示すグラフを出力する必要があるDalexのような関数を使用する場合、すべての値が1つのカテゴリ変数に含まれているように見えるため、結果を解釈する方法がわからないことですグラフに含まれています。
たとえば、モデルは、男性と女性の両方の平均予測に対する「性別」カテゴリ変数の影響を示しています...
これも「平均予測」という名前の横線を示していますが、「平均予測」とは何ですか? 男性を参考値として算出したのか、女性を基準に算出したのか。
結果が何を意味するのか、ここで本当に混乱しています...誰かこれを明確にしてもらえますか? 私が使おうとしている機能model_profile()
も手帳に書いてあります。ありがとうございました!
私がコピーしたコード:
numerical_features = ['age', 'fare', 'sibsp', 'parch']
numerical_transformer = Pipeline(
steps=[
('imputer', SimpleImputer(strategy='median')),
('scaler', StandardScaler())
]
)
categorical_features = ['gender', 'class', 'embarked']
categorical_transformer = Pipeline(
steps=[
('imputer', SimpleImputer(strategy='constant', fill_value='missing')),
('onehot', OneHotEncoder(handle_unknown='ignore'))
]
)
preprocessor = ColumnTransformer(
transformers=[
('num', numerical_transformer, numerical_features),
('cat', categorical_transformer, categorical_features)
]
)
classifier = MLPClassifier(hidden_layer_sizes=(150,100,50), max_iter=500, random_state=0)
clf = Pipeline(steps=[('preprocessor', preprocessor),
('classifier', classifier)])
clf.fit(X, y)
exp = dx.Explainer(clf, X, y)