2016-09-10 3 views
1

Ich versuche numerische Analyse zu lernen. Ich verfolge diesen Artikel - http://scikit-learn.org/stable/auto_examples/linear_model/plot_iris_logistic.htmlDen Wert basierend auf zwei Parametern voraussagen

Meine Daten wie folgt aussehen:

date hr_of_day vals 
2014-05-01 0 72 
2014-05-01 1 127 
2014-05-01 2 277 
2014-05-01 3 411 
2014-05-01 4 666 
2014-05-01 5 912 
2014-05-01 6 1164 
2014-05-01 7 1119 
2014-05-01 8 951 
2014-05-01 9 929 
2014-05-01 10 942 
2014-05-01 11 968 
2014-05-01 12 856 
2014-05-01 13 835 
2014-05-01 14 885 
2014-05-01 15 945 
2014-05-01 16 924 
2014-05-01 17 914 
2014-05-01 18 744 
2014-05-01 19 377 
2014-05-01 20 219 
2014-05-01 21 106 
2014-05-01 22 56 
2014-05-01 23 43 
2014-05-02 0 61 

Für gegebenes Datum und und Stunde mag ich die vals vorherzuzusagen und Muster zu identifizieren.

Ich habe diesen Code geschrieben:

import pandas as pd 
from sklearn import datasets 
from sklearn import metrics 
from sklearn.linear_model import LogisticRegression 

# read the data in 
Train = pd.read_csv("data_scientist_assignment.tsv") 
#print df.head() 
x1=["date", "hr_of_day", "vals"] 
#print x1 
#print df[x1] 
test=pd.read_csv("test.tsv") 


model = LogisticRegression() 
model.fit(Train[x1], Train["vals"]) 
print(model) 
print model.score(Train[x1], Train["vals"]) 

print model.predict_proba(test[x1]) 

ich Thsi Störung erhalten:

KeyError: "['date' 'hr_of_day' 'vals'] not in index" 

Was das Problem ist. Gibt es einen besseren Weg, dies zu tun?

Testdateiformat:

date hr_of_day 
2014-05-01 0 
2014-05-01 1 
2014-05-01 2 
2014-05-01 3 
2014-05-01 4 
2014-05-01 5 
2014-05-01 6 
2014-05-01 7 

Voll Fehler dem Spiel:

Traceback (most recent call last): 
    File "socratis.py", line 16, in <module> 
    model.fit(Train[x1], Train["vals"]) 
    File "/usr/local/lib/python2.7/dist-packages/pandas/core/frame.py", line 1986, in __getitem__ 
    return self._getitem_array(key) 
    File "/usr/local/lib/python2.7/dist-packages/pandas/core/frame.py", line 2030, in _getitem_array 
    indexer = self.ix._convert_to_indexer(key, axis=1) 
    File "/usr/local/lib/python2.7/dist-packages/pandas/core/indexing.py", line 1210, in _convert_to_indexer 
    raise KeyError('%s not in index' % objarr[mask]) 
KeyError: "['date' 'hr_of_day' 'vals'] not in index" 
+4

@Merlin, diese Frage enthält Code und handelt von einem Programmierfehler, nicht über Statistiken selbst. IMO, es ist perfekt zum Thema hier auf SO. – cel

+0

Fügen Sie bitte den vollständigen Fehler stacktrace und nicht nur den Fehlernamen ein. – cel

+1

@cel: aktualisiert es – user3449212

Antwort

1

I sep='\t' parameter schlagen zu liefern, wenn TSV Lesen:

Train = pd.read_csv("data_scientist_assignment.tsv", sep='\t') # use TAB as column separator 

Wenn Sie dieses Problem zu beheben, gibt es ein weiteres Problem, in der Warteschlange: ValueError: could not convert string to float: '2014-09-13' Dies ist becaus Die lineare Regression benötigt numerische Features und die Spalte date ist ein String-Typ.

können Sie neue Spalt einführen timestamp durch das Datum Zeitstempel (Sekunden seit Epoche) Umwandlung und als Funktion verwenden:

Train['timestamp'] = pd.to_datetime(Train['date']).apply(lambda a: a.timestamp()) 
x1=["timestamp", "hr_of_day", "vals"] 

Aus ML Perspektive, sollten Sie nicht Ihren Zielwert verwenden vals als ein Eingabemerkmal Sie sollten auch das Datum als einzelne Merkmale darstellen: Tag, Monat, Jahr; oder der Wochentag hängt davon ab, was Sie modellieren möchten.

+0

immer noch den gleichen Fehler nach VMS in x1. Ist das Testdateiformat korrekt? – user3449212

+0

@ user3449212 versuchen, auch 'sep = '\ t'' Argument für die' read_csv' hinzuzufügen. Bevor Sie weitermachen, vergewissern Sie sich, dass Sie die TSV-Datei ordnungsgemäß geladen haben. 'print (Train.columns)' und 'print (Train)' etc. –

+0

okay, sollte ich 'vals' in den Zugdatensatz aufnehmen? – user3449212

Verwandte Themen