2016-12-22 1 views
0

Ich brauche Hilfe bei der Vorbereitung eines Linux Pfades/Verzeichnisses für das Training scikit. Im Moment dies bisherSo wandeln Sie den Pfad für scikit-learn um

ich wollte jetzt
db = get_db() 
df = pd.read_sql_query(
    'SELECT Request,Used,Count FROM history where User = "john"', db) 
print(df.head) 
X = df[['Request','Count']] 
y = df['Used'] 
X_train, X_test, y_train, y_test = train_test_split(X, y) 
model = LinearRegression().fit(X_train, y_train) 
print("LinearRegression Training set score: {:.2f}".format(model.score(X_train, y_train))) 
print("LinearRegression Test set score: {:.2f}".format(model.score(X_test, y_test))) 

#Output of print(df.head) 
      Request  Used   Count 
0   5400   3088   20 
1   6400   3500   20 

arbeitet, um die SQL-Abfrage ändern und einen Pfad zu dem Ergebnis hinzufügen.

df = pd.read_sql_query(
    'SELECT Request,Used,Count,Path FROM history where User = "john"', db) 
df['Path'] = df['Path'].str.split("/") 
print(df.head) 
X = df[['Request','Count','Path']] 
y = df['Used'] 
X_train, X_test, y_train, y_test = train_test_split(X, y) 
... 
#Output of print(df.head) 
    #Output of print(df.head) 
      Request  Used   Count Path 
0   5400   3088   20  [, home, john, testdir] 
1   6400   3500   20  [, home, john, blub] 

Wie kann df [ 'PATH'] konvertieren für scikit verwendbar zu sein. Vielleicht eine Matrix wie eine Repräsentation mit OneHotEnocder? Jede Hilfe oder Tipps würde mir sehr helfen.

danke im voraus

+0

Können Sie ein Beispiel geben, wie das Endergebnis der Spalte 'Path' aussehen soll? Wie viele einzigartige Klassen (home, john, testdir, blub usw.) gibt es? Ein paar oder viele? 'MultiLabelBinarizer' scheint meine Antwort zu sein. – Jarad

+0

Da die Pfade benutzerdefiniert sind, könnte es einige von ihnen geben. Es gibt nur wenige Hauptverzeichnisse, in denen ein Benutzer seine eigenen Verzeichnisse erstellen kann, z./home,/tmp,/tmpdir. Ich habe bemerkt, dass einige Benutzer dazu neigen, ähnliche Namensschemata unter verschiedenen Toplevel-Verzeichnissen zu verwenden. Ich hoffte, das für eine bessere Vorhersage zu verwenden, z. /tmp/john/abc/x1 /tmp/john/abc/x2 /tmp/john/abc/x3 /tmpdir/john/abc/x1 /tmpdir/john/abc/x2 Und natürlich Der Pfad tief kann sehr variieren. Die Länge eines Pfadspalteneintrags könnte also unterschiedlich sein [, home, john, testdir] [, home, john, testdir, x1] – MSO

Antwort

0

ich löste es so.

dummy = df['Path'].str.split('/').apply(pd.Series).astype(str) 
df = df.drop('Path', axis=1) 
new_df = pd.concat([df, dummy], axis=1) 

Abhängig von verschiedenen Pfaden kann der Datenrahmen sehr groß werden. Aber es ist genug, um fortzufahren. Ich überprüfe df ['Path']. Str.extract(), um den Pfad besser zu trennen.

Verwandte Themen