Fehler, LogisticRegression, sklearn

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
naheliegend
User
Beiträge: 52
Registriert: Mittwoch 8. August 2018, 16:42

Freitag 14. September 2018, 14:26

Hi,

ich probiere mich gerade ein bisschen aus und möchte auf einen kleinen Datensatz die LogisticRegression anwenden.
Es traten einige Probleme auf, von denen ich nicht alle beheben konnte.
Erst musste ich meine ndarrays reshapen und dann noch im clf.fit() eine encodierte Version reinpacken. Warum habe ich nicht ganz verstanden.

Zudem tritt weiterhin der Fehler:
DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().
y = column_or_1d(y, warn=True)
auf.

Code: Alles auswählen

Examples = pandas.read_excel(io=path, sheet_name=0, header=None, skiprows=2)
Examples = Examples.values
train_x = Examples[0:13,0].reshape(-1,1)
train_y = Examples[0:13,1].reshape(-1,1)
test_x = Examples[13:16,0].reshape(-1,1)
test_y = Examples[13:16,1].reshape(-1,1)


#Encoden
lab_enc = preprocessing.LabelEncoder()
training_y_encoded = lab_enc.fit_transform(train_y)

#Model
clf = LogisticRegression()
clf.fit(train_x, training_y_encoded)
__deets__
User
Beiträge: 3731
Registriert: Mittwoch 14. Oktober 2015, 14:29

Freitag 14. September 2018, 14:50

Na wie wuerdest du dir denn die erste Fehlermeldung uebersetzen? Und hast du mal nachgeschaut, was die vorgeschlagene Funktion macht?
naheliegend
User
Beiträge: 52
Registriert: Mittwoch 8. August 2018, 16:42

Freitag 14. September 2018, 15:56

__deets__ hat geschrieben:
Freitag 14. September 2018, 14:50
Na wie wuerdest du dir denn die erste Fehlermeldung uebersetzen? Und hast du mal nachgeschaut, was die vorgeschlagene Funktion macht?
Durch das Encoden packe ich als training_y_encoded einen 1D array rein. Aber wenn ich

Code: Alles auswählen

clf.fit(train_x, training_y_encoded.ravel())
schreibe, kommt der Fehler wieder.
__deets__
User
Beiträge: 3731
Registriert: Mittwoch 14. Oktober 2015, 14:29

Freitag 14. September 2018, 15:58

Wie sehen denn die shapes von train_x und training_y_encoded aus?
naheliegend
User
Beiträge: 52
Registriert: Mittwoch 8. August 2018, 16:42

Freitag 14. September 2018, 16:06

Code: Alles auswählen

train_x = 
[[ 2. ]
 [ 3. ]
 [ 4. ]
 [ 3.4]
 [ 5. ]
 [ 6.7]
 [55. ]
 [63. ]
 [65. ]
 [54. ]
 [42. ]
 [55. ]
 [38. ]]

Code: Alles auswählen

train_y = 
[[ 2.1]
 [ 4.9]
 [ 1.4]
 [ 2.1]
 [ 1.9]
 [ 2.8]
 [70. ]
 [64.3]
 [54.5]
 [80. ]
 [65. ]
 [65. ]
 [45. ]]

Code: Alles auswählen

 training_y_encoded =
 [ 2  4  0  2  1  3  9  7  6 10  8  8  5]
__deets__
User
Beiträge: 3731
Registriert: Mittwoch 14. Oktober 2015, 14:29

Freitag 14. September 2018, 16:23

Na und was ist mit train_x? Das ist doch auch ein Spaltenvektor, und nicht eine flache Liste. Was passiert denn, wenn du den ebenfalls "ravelst"?
naheliegend
User
Beiträge: 52
Registriert: Mittwoch 8. August 2018, 16:42

Freitag 14. September 2018, 19:43

__deets__ hat geschrieben:
Freitag 14. September 2018, 16:23
Na und was ist mit train_x? Das ist doch auch ein Spaltenvektor, und nicht eine flache Liste. Was passiert denn, wenn du den ebenfalls "ravelst"?
Das selbe... der Fehler bleibt.
naheliegend
User
Beiträge: 52
Registriert: Mittwoch 8. August 2018, 16:42

Freitag 14. September 2018, 21:03

Fehler behoben durch:

Code: Alles auswählen

training_y_encoded = lab_enc.fit_transform(train_y.ravel())
Die Errormessage wurde durch den Encoder ausgelöst und nicht durch die .fit() Funktion.
Antworten