J'utilise l'estimation récursive des caractéristiques (RFE) pour la sélection des caractéristiques. Cela fonctionne en prenant itérativement un estimateur tel qu'un classificateur SVM, en l'ajustant aux données, et en supprimant les caractéristiques avec les poids les plus faibles (coefficients).Comment obtenir les coefficients de RFE en utilisant sklearn?
Je peux adapter cela aux données et effectuer la sélection de caractéristiques. Cependant, je veux ensuite récupérer les poids appris pour chaque caractéristique de la RFE.
J'utilise le code suivant pour initialiser un objet classificateur et un objet RFE, et je les adapte aux données.
svc = SVC(C=1, kernel="linear")
rfe = RFE(estimator=svc, n_features_to_select=300, step=0.1)
rfe.fit(all_training, training_labels)
J'essaie alors d'imprimer les coefficients
print ('coefficients',svc.coef_)
et recevez:
AttributeError: 'RFE' object has no attribute 'dual_coef_'
Selon sklearn documentation, l'objet classificateur doit avoir cet attribut:
coef_ : array, shape = [n_class-1, n_features]
Weights assigned to the features (coefficients in the primal problem). This is only
available in the case of a linear kernel.
coef_ is a readonly property derived from dual_coef_ and support_vectors_.
J'utilise un noyau linéaire, donc ce n'est pas le problème. Est-ce que quelqu'un peut expliquer pourquoi je suis incapable de récupérer les coefficients? Et y a-t-il un moyen de contourner cela?
Vous pouvez répliquer le mécanisme RFE manuellement et enregistrer à chaque étape le vecteur 'coef_'. Pour chaque étape, adaptez le SVC aux données, enregistrez le vecteur 'coef_' et supprimez le' step'% des entités ayant les coefficients les plus faibles. BTW est préférable de modifier votre message avec une mise à jour que de poster la mise à jour comme réponse. – dukebody