Sklearn 中 MLPClassifier 中最重要的功能

Posted

技术标签:

【中文标题】Sklearn 中 MLPClassifier 中最重要的功能【英文标题】:Most important features in MLPClassifier in Sklearn 【发布时间】:2017-11-11 15:46:27 【问题描述】:

我想知道在 Sklearn 中拟合 MLP 分类器后,是否有任何方法可以可视化或找到最重要/最有贡献的特征。

简单示例:

import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import LeaveOneOut
from sklearn.neural_network import MLPClassifier
from sklearn.model_selection import GridSearchCV
from sklearn.pipeline import make_pipeline


data= pd.read_csv('All.csv', header=None)
X, y = data.iloc[0:, 0:249].values, data.iloc[0:,249].values

sc = StandardScaler()
mlc = MLPClassifier(activation = 'relu', random_state=1,nesterovs_momentum=True)
loo = LeaveOneOut()
pipe = make_pipeline(sc, mlc)

parameters = "mlpclassifier__hidden_layer_sizes":[(168,),(126,),(498,),(166,)],"mlpclassifier__solver" : ('sgd','adam'), "mlpclassifier__alpha": [0.001,0.0001],"mlpclassifier__learning_rate_init":[0.005,0.001] 
clf = GridSearchCV(pipe, parameters,n_jobs= -1,cv = loo)
clf.fit(X, y)

model = clf.best_estimator_
print("the best model and parameters are the following:  ".format(model))

【问题讨论】:

【参考方案1】:

好问题。 NN 模型缺乏可解释性是 ML/NN 社区一直在努力解决的问题。

最近受到关注的一种方法是LIME paper(Ribeiro 等人,KDD'16)。 以下是摘要的相关摘录:

“在这项工作中,我们提出了 LIME,这是一种新颖的解释技术,通过在预测周围学习可解释的模型,以可解释和忠实的方式解释任何分类器的预测”

还有一个 GitHub repository(Python,耶!)。

(如果您尝试使用 LIME,请在问题 cmets.. 中分享您的经验。)

【讨论】:

LIME 用于分析样本级别的特征,它不会为您提供模型级别的任何信息。

以上是关于Sklearn 中 MLPClassifier 中最重要的功能的主要内容,如果未能解决你的问题,请参考以下文章

从 sklearn 的 MLPClassifier 中检索最终的隐藏激活层输出

SKlearn 导入 MLPClassifier 失败

partial_fit Sklearn 的 MLPClassifier

Python - sklearn.MLPClassifier:如何获取第一个隐藏层的输出

使用 L2 正则化将 sklearn MLPClassifier 移植到 Keras

使用sklearn时cannot import name MLPClassifier的解决办法