J'essaie de sélectionner des caractéristiques en évaluant les sorties de coefficients de régression et de sélectionner les caractéristiques avec les coefficients de magnitude les plus élevés. Le problème est que je ne sais pas comment obtenir les caractéristiques respectives, car seuls les coefficients sont renvoyés de l'attribut coef._. La documentation dit:
Coefficients estimés pour le problème de régression linéaire. Si plusieurs les cibles sont passées lors de l'ajustement (y 2D), il s'agit d'un tableau 2D de shape (n_targets, n_features), alors que si une seule cible est passée, c'est un tableau 1D de longueur n_features.
Je passe dans mon regression.fit (A, B), où A est un tableau 2-D, avec la valeur tfidf pour chaque entité d'un document. Exemple de format:
"feature1" "feature2"
"Doc1" .44 .22
"Doc2" .11 .6
"Doc3" .22 .2
B sont mes valeurs cibles pour les données, qui ne sont que des chiffres 1 à 100 associés à chaque document:
"Doc1" 50
"Doc2" 11
"Doc3" 99
En utilisant régression.coef_, je reçois une liste de coefficients, mais pas les caractéristiques correspondantes! Comment puis-je obtenir les fonctionnalités? Je suppose que je dois modifier la structure de mes cibles B, mais je ne sais pas comment.
Ce que j'ai trouvé pour travailler était:
X = vos variables indépendantes
coefficients = pd.concat([pd.DataFrame(X.columns),pd.DataFrame(np.transpose(logistic.coef_))], axis = 1)
L’hypothèse que vous avez énoncée: que l’ordre de régression.coef_ est le même que dans l’ensemble TRAIN est vraie dans mes expériences. (fonctionne avec les données sous-jacentes et vérifie également les corrélations entre X et y)
Je suppose que vous travaillez sur une tâche de sélection de fonctionnalités. Bien utiliser regression.coef_
obtient les coefficients correspondants aux fonctionnalités, c'est-à-dire que regression.coef_[0]
correspond à "feature1" et regression.coef_[1]
correspond à "feature2". Cela devrait être ce que vous désirez.
Eh bien, je recommande à son tour le modèle d'arborescence de Sklearn, qui pourrait également être utilisé pour la sélection des fonctionnalités. Pour être précis, consultez ici .
coefficients = pd.DataFrame({"Feature":X.columns,"Coefficients":np.transpose(logistic.coef_)})
Vous pouvez le faire en créant un bloc de données:
cdf = pd.DataFrame(regression.coef_, X.columns, columns=['Coefficients'])
print(cdf)
Supposons que la variable X de vos données de train soit 'df_X', vous pouvez ensuite mapper dans un dictionnaire et alimenter le cadre de données de pandas pour obtenir la cartographie:
pd.DataFrame(dict(Zip(df_X.columns,model.coef_[0])),index=[0]).T