Ich habe geschrieben, variieren grundlegende Sklearn-Code mit logistischen Regression, um den Wert vorherzusagen.Mit logistischen Regression, um den Parameter Wert vorherzusagen
Trainingsdaten sieht aus wie -
https://gist.github.com/anonymous/563591e0395e8d988277d3ce63d7438f
date hr_of_day vals
01/05/2014 9 929
01/05/2014 10 942
01/05/2014 11 968
01/05/2014 12 856
01/05/2014 13 835
01/05/2014 14 885
01/05/2014 15 945
01/05/2014 16 924
01/05/2014 17 914
01/05/2014 18 744
01/05/2014 19 377
01/05/2014 20 219
01/05/2014 21 106
und ich habe zuerst 8 Veröffentlichungen von Trainingsdaten ausgewählt, um nur den Klassifikator zu validieren, die
istich den Wert von vals
vorhersagen wollen , in Testdaten habe ich es als 0
gesetzt. Ist das korrekt?
date hr_of_day vals
2014-05-01 0 0
2014-05-01 1 0
2014-05-01 2 0
2014-05-01 3 0
2014-05-01 4 0
2014-05-01 5 0
2014-05-01 6 0
2014-05-01 7 0
Mein Modellcode, funktioniert gut. Aber mein Ergebnis sieht gestört aus. Ich habe Wert von vals
im Ergebnis erwartet. Statt dessen bekomme ich eine große Matrix mit allen Elementwerten wie 0.00030676
.
Ich schätze es, wenn jemand Details geben oder mir helfen kann, mit diesem Ergebnis besser zu spielen.
import pandas as pd
from sklearn import datasets
from sklearn import metrics
from sklearn.linear_model import LogisticRegression
from datetime import datetime, date, timedelta
Train = pd.read_csv("data_scientist_assignment.tsv", sep='\t', parse_dates=['date'])
Train['timestamp'] = Train.date.values.astype(pd.np.int64)
x1=["timestamp", "hr_of_day"]
test=pd.read_csv("test.tsv", sep='\t', parse_dates=['date'])
test['timestamp'] = test.date.values.astype(pd.np.int64)
print(Train.columns)
print(test.columns)
model = LogisticRegression()
model.fit(Train[x1], Train["vals"])
print(model)
print model.score(Train[x1], Train["vals"])
print model.predict_proba(test[x1])
Ergebnisse wie folgt aussieht:
In [92]: print(model)
LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,
penalty='l2', random_state=None, solver='liblinear', tol=0.0001,
verbose=0, warm_start=False)
In [93]: print model.score(Train[x1], Train["vals"])
0.00520833333333
In [94]:
In [94]: print model.predict_proba(test[x1])
[[ 0.00030676 0.00030676 0.00030676 ..., 0.00030889 0.00030885
0.00030902]
[ 0.00030676 0.00030676 0.00030676 ..., 0.00030889 0.00030885
0.00030902]
[ 0.00030676 0.00030676 0.00030676 ..., 0.00030889 0.00030885
0.00030902]
...,
[ 0.00030676 0.00030676 0.00030676 ..., 0.00030889 0.00030885
0.00030902]
[ 0.00030676 0.00030676 0.00030676 ..., 0.00030889 0.00030885
0.00030902]
[ 0.00030676 0.00030676 0.00030676 ..., 0.00030889 0.00030885
0.00030902]]
Was ist es, verstehst du nicht? "Ich verstehe nicht" stellt keine Frage. – Julien
@JulienBernu: bearbeitet die Frage. Eigentlich im Ergebnis sollte es den Wert von "Vals" vorherzusagen, anstatt dass, ich bekomme große Matrix mit allen Werten auf 0.00030676 gesetzt – user123
Sie verwenden Predict_Proba, das ist, warum Sie Vorhersagewahrscheinlichkeit erhalten. Versuchen Sie stattdessen, model.predict() zu verwenden. –