2016-05-23 6 views
0

Ich mache derzeit die Logistische Regression im maschinellen Lernen für Python. Dies ist der Code, den ich schreibe.Logistische Regression in Python

import pandas as pd 
from sklearn import linear_model 
import numpy as np 
from sklearn.utils import column_or_1d 

logistic = linear_model.LogisticRegression() 

data = pd.read_excel('/home/mick/PycharmProjects/project1/excel/Ron95_Price_Class.xlsx') 

X = data[['Date']] 
y = data[['Ron95_RM']] 

y = np.ravel(y) 

logistic.fit(X, y) 

price = logistic.predict(42491) 
print "The price for Ron95 in next month will be RM", np.array_str(price,1) 

Dies ist die Ausgabe des Codes

The price for Ron95 in next month will be RM [ u'B'] 

Es gibt keine Fehler, aber meine Frage ist es, die Zeichen nach RM in der Ausgabe sollte ‚B‘ oder eine andere Zeichen lang sein. Ich frage mich, ob es ist, weil ich den Code falsch mache oder nur ein Formatproblem mit dem numpy-Array ist.

Weil ich heute eigentlich nur mit Python angefangen habe, tut mir leid, wenn ich nur einen dummen Fehler gemacht habe.

+0

Was ist 42491 und was ist das Ergebnis für den Druckpreis –

+0

Könnten Sie ein Beispiel für die Daten in der xlsx geben? – DJanssens

+0

Wenn nur Druckpreis, dann: [u'B '] – Mick

Antwort

0

Wenn ich mich nicht täusche die ‚u‘ ist nur Notation, die die Zeichenfolge ein Unicode-String ist. Ich bin nicht sicher, wie Sie Ihren Code ausführen, aber wenn ich in einem ipython Notebook oder in einem Fenster testen Eingabeaufforderung ich folgende Ausgabe:

The price for Ron95 in next month will be RM [ 'B'] 

Dies ist vielleicht, weil ich dies lief in Python 3.5, während es scheint, Sie verwenden immer noch Python < 3.0.

Es ist nicht so, dass Ihre Antwort falsch ist, Sie erhalten nur Informationen über das Format der Daten. Für weitere Fragen zu diesem Thema siehe here und here. Die Python how-to on unicode kann auch hilfreich sein.

0

ich denke, es leichter sein wird, wenn Sie einige Daten aus Ron95_Price_Class.xlsx Post
Im Moment sehe ich, dass Sie nicht Zielvariable (y), aus dem Zug Daten löschen. Sie können es tun, indem

X = data['Date']    #you can use only one bracket if choose only 
y = data['Ron95_RM']   #column 
X = data.drop('Ron95_RM') 
+0

ValueError: labels ['Ron95_RM'] nicht in Achse enthalten – Mick

+0

Hoppla, sorry, mein Fehler. Richtig, in den Zugdaten ist nicht 'Ron95_RM'. Ich muss schlafen gehen :) Konnten Sie einige Zeilen von Ron95_Price_Class.xlsx, oder drucken (X, y)? – LinearLeopard

0

Die Predict-Methode, wie in der scikit-learn-Dokumentation erwähnt, http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html#sklearn.linear_model.LogisticRegression.predict, erwähnt die Rückkehr der Vorhersage-Methode Array, Shape = [n_samples]. Also für Sie ist die Form 1x1 Array. Um die gewünschte Ausgabe zu erhalten, versuchen Sie "price [0]".

+0

Vielen Dank! Der Preis [0] funktioniert tatsächlich – Mick

+0

Cool, ich würde es wirklich schätzen, wenn Sie eine + Stimme abgeben oder meine Antwort als die richtige auswählen könnten. Vielen Dank. – pmaniyan