2016-05-25 10 views
1

Meine Trainingsmatrix X hat Form (5182, 19231) und y ist eine Liste von 1s und 0s mit Länge 5182. Meine Testmatrix hat Form (496, 5477). Ich habe sie in separaten Pickle-Dateien gespeichert. Hier ist mein Code:Python sklearn.linear_model: LinearRegression() ValueError aufgetreten, wenn .predict()

def read(pklFile1): 
    f=open(pklFile1, 'rb') 
    Y = cPickle.load(f) 
    f.close() 
    return Y 
if __name__ == '__main__': 
    X=read("results/train_feature.pkl") 
    y=read("results/train_label.pkl") 
    test=read("results/test_feature.pkl") 
    target=read("test_label.pkl") 
    clf=LogisticRegression() 
    clf=clf.fit(X, y) 
    predicted= clf.predict(test) 
    accuracy=np.mean(predicted == target) 
    print accuracy 

Wenn ich meinen Code ausführen, wird die folgende Meldung aufgetreten beim Laufen
predicted = clf.predict(test):

ValueError: X has 5477 features per sample; expecting 19231

Wie kann ich es beheben?

+0

Die Anzahl der Merkmale, die nicht übereinstimmen zwischen Trainings- und Vorhersagephase, Sie können Ihr Modell nicht mit weniger oder mehr Funktionen als mit der Anzahl der Features in der Trainingsphase vorhersagen. –

Antwort

0

Sie haben ein lineares Modell auf 19231-Funktionen trainiert, möchten aber einige neue Beispiele mit nur 5477 Merkmalen vorhersagen. So funktionieren lineare Modelle nicht (oder die meisten Klassifikatoren). Die Anzahl der Features muss gleich sein!

Wie sollte Ihr lineares Modell, das aus einer linearen Kombination von 19231-Variablen besteht, nur mit 5477 Variablen arbeiten? Wenn einige vars während der Vorhersage unbekannt sind, könnten Sie sie imputieren (z. B. Einstellung auf Null oder Mittelwert), aber selbst dieser Ansatz muss die genaue Zuordnung Ihrer Variablen kennen. Welche Variable im Zug entspricht welcher vorherzusagen.

Verwandte Themen