Python3.5régression logistique Python K-hold validation croisée: comment créer un drameframe pour coef_
J'ai un ensemble de données stockées dans un varibale, file
, et je tente d'appliquer la validation croisée 10 avec prise régression logistique. Ce que je cherche, c'est la façon de lister la moyenne de clf.coef_
.
print(file.head())
Result Interest Limit Service Convenience Trust Speed
0 0 1 1 1 1 1 1
1 0 1 1 1 1 1 1
2 0 1 1 1 1 1 1
3 0 4 4 3 4 2 3
4 1 4 4 4 4 4 4
est ici un simple code de régression logistique que j'ai écrit afin de montrer une liste de coef_
.
[En]
import pandas as pd
from pandas import DataFrame
import numpy as np
from sklearn import cross_validation
from sklearn.linear_model import LogisticRegression
X = file.drop(['Result'],1)
y = file['Result']
X_train, X_test, y_train, y_test = cross_validation.train_test_split(X,y,test_size=0.25)
clf = LogisticRegression(penalty='l1')
clf.fit(X_train,y_train)
accuracy = clf.score(X_test,y_test)
print(accuracy)
coeff_df = pd.DataFrame([X.columns, clf.coef_[0]]).T
print(coeff_df)
[Out]
0.823061630219
0 1
0 Interest 0.163577
1 Limit -0.161104
2 Service 0.323073
3 Convenience 0.121573
4 Trust 0.370012
5 Speed 0.089934
6 Major 0.183002
7 Ads 0.0137151
Ensuite, j'ai essayé d'appliquer 10 fois la validation croisée au même ensemble de données. J'ai un code ci-dessous mais je n'ai pas pu produire de dataframe d'une liste de coef_, coeff_df
, comme je l'ai fait pour l'analyse ci-dessus. Quelqu'un peut-il fournir des solutions?
[In]
[out]
[ 0.82178218 0.7970297 0.84158416 0.80693069 0.84158416 0.80693069
0.825 0.825 0.815 0.76 ]
0.814084158416
Merci! Votre code fonctionne! Une question supplémentaire - est-il de toute façon de produire une liste de scores en fonction de votre code? Je veux mettre 'L1 penalty' et 'cross_val_score' ne me laisse pas. – Ryo
Mise à jour de ma réponse pour résoudre ce problème –