Ich habe einen Datensatz in einem Varibale gespeichert, file
, und ich versuche, 10 halten, Kreuzvalidierung angewandt werden soll logistische Regression. Was ich suche ist der Weg, um den Durchschnitt von clf.coef_
aufzulisten.
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
Hier ist eine einfache Code logistische Regression ich geschrieben, um haben eine Liste von coef_
zu zeigen.
[In]
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
Dann habe ich versucht, das 10-fache Kreuzvalidierung auf den gleichen Datenbestand zu übernehmen. Ich habe einen Code unten, aber ich war nicht in der Lage einen Datenrahmen aus einer Liste von coef_ zu produzieren, coeff_df
, wie ich oben für die Analyse tat. Kann jemand Lösungen anbieten?
[In]
[Out]
[ 0.82178218 0.7970297 0.84158416 0.80693069 0.84158416 0.80693069
0.825 0.825 0.815 0.76 ]
0.814084158416
Danke! Dein Code funktioniert! Eine zusätzliche Frage - gibt es überhaupt eine Liste von Punktzahlen basierend auf Ihrem Code? Ich möchte 'L1 Strafe' und 'cross_val_score' nicht lassen. – Ryo
Aktualisiert die meine Antwort, um dies zu adressieren –