Latitude
Anmeldungsdatum: 10. November 2012
Beiträge: 196
|
Guten Abend, ich möchte aus meiner CSV-Datei ein Datenset für die Variablen X und y lesen, aber irgendwie klappt das nicht so recht. Verwendet wird Python 3x. Fehlermeldung: | ValueError: Found input variables with inconsistent numbers of samples: [1, 1601]
|
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 |
from sklearn.neural_network import MLPClassifier
import numpy as np
#X = [[1242040.000, 1], [1242039.000, 1]]
#y = [0, 0]
X = np.genfromtxt('rolles_nothing_result.csv', delimiter=',', usecols=(1), unpack=True, dtype=None)
y = np.genfromtxt('rolles_nothing_result.csv', delimiter=',', usecols=(2), unpack=True, dtype=None)
clf = MLPClassifier(solver='lbfgs', alpha=1e-5, hidden_layer_sizes=(5, 2), random_state=1)
clf.fit(X, y)
eingabe = input("für was?: ")
predict = clf.predict([[eingabe, 1]])
print (predict)
[coef.shape for coef in clf.coefs_]
|
das mit der Eingabe funktioniert auch nicht ganz, ich weis. Aber eins nach dem anderen... Inhalt des CSV-Files
1242040.000,1,0.000
1242039.000,1,0.000
1242038.000,1,3.000
... (erste Spalte: fortlaufende Zahl, zweite Spalte: immer 1, dritte Spalte: zwischen 0.000 und 14.000)
|
sebix
Moderator, Webteam
Anmeldungsdatum: 14. April 2009
Beiträge: 5346
|
Latitude schrieb: Fehlermeldung: | ValueError: Found input variables with inconsistent numbers of samples: [1, 1601]
|
Tritt das innerhalb von sklearn auf?
|
Latitude
(Themenstarter)
Anmeldungsdatum: 10. November 2012
Beiträge: 196
|
Sobalt ich den Script ausführe
|
noisefloor
Ehemaliger
Anmeldungsdatum: 6. Juni 2006
Beiträge: 29064
Wohnort: WW
|
Hallo, poste bitte mal den _vollen_ StackTrace der Python-Fehlermeldung. Die Zeile alleine nützt wenig. Apropos nützt wenig: die letzte Zeile im geposteten Skript, die List Comprehension, nützt so auch wenig, weil an keine Variable gebunden noch wird sonst irgendwas damit gemacht. Gruß, noisefloor
|
sebix
Moderator, Webteam
Anmeldungsdatum: 14. April 2009
Beiträge: 5346
|
noisefloor schrieb: Apropos nützt wenig: die letzte Zeile im geposteten Skript, die List Comprehension, nützt so auch wenig, weil an keine Variable gebunden noch wird sonst irgendwas damit gemacht.
Meine Vermutung: Das Skript wird in einer Python-Konsole ausgefuehrt, womit die Werte ausgegeben werden.
|
Latitude
(Themenstarter)
Anmeldungsdatum: 10. November 2012
Beiträge: 196
|
Meine Vermutung: Das Skript wird in einer Python-Konsole ausgefuehrt, womit die Werte ausgegeben werden.
Jain. Konsole via "Python3...". Am Ende möcht ich den Skript immer nach dem Ergebnis/Result für die nächste Number fragen können. Aber das wird dieser Skipt nicht können, deshalb geht es erstmal darum wie ich überhaupt die Daten richtig lesen lasse. poste bitte mal den _vollen_ StackTrace der Python-Fehlermeldung.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 | zefx@Python:~/Python3/VERSUCHE$ python3 test.py
/home/zefx/.local/lib/python3.5/site-packages/sklearn/utils/validation.py:395: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and will raise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.
DeprecationWarning)
Traceback (most recent call last):
File "test.py", line 12, in <module>
clf.fit(X, y)
File "/home/zefx/.local/lib/python3.5/site-packages/sklearn/neural_network/multilayer_perceptron.py", line 618, in fit
return self._fit(X, y, incremental=False)
File "/home/zefx/.local/lib/python3.5/site-packages/sklearn/neural_network/multilayer_perceptron.py", line 330, in _fit
X, y = self._validate_input(X, y, incremental)
File "/home/zefx/.local/lib/python3.5/site-packages/sklearn/neural_network/multilayer_perceptron.py", line 902, in _validate_input
multi_output=True)
File "/home/zefx/.local/lib/python3.5/site-packages/sklearn/utils/validation.py", line 531, in check_X_y
check_consistent_length(X, y)
File "/home/zefx/.local/lib/python3.5/site-packages/sklearn/utils/validation.py", line 181, in check_consistent_length
" samples: %r" % [int(l) for l in lengths])
ValueError: Found input variables with inconsistent numbers of samples: [1, 1601]
zefx@Python:~/Python3/VERSUCHE$
|
|
noisefloor
Ehemaliger
Anmeldungsdatum: 6. Juni 2006
Beiträge: 29064
Wohnort: WW
|
Hallo, ich würde die Fehlermeldung so deuten, dass X und y nicht die gleiche Länge habe... Das ist aber _geraten_. Ein schneller Check der Doku gibt da auch nicht viel her. Im Zweifelsfall musst du dich mal durch die komplette Doku und ggf. den Quellcode des Moduls kämpfen. Gruß, noisefloor
|
sebix
Moderator, Webteam
Anmeldungsdatum: 14. April 2009
Beiträge: 5346
|
Laut Dokumentation muss X eine n*n Matrix sein, und y ein n-Array. In deinem Fall hast du nur zwei eindimensionale Arrays. Im uebrigen musst du nicht das File zweimal einlesen. Ich weiss nicht welche Spalten dann in deinem Fall X oder y sein sollen, aber das kannst du ja selbst anpassen: | data = np.genfromtxt('rolles_nothing_result.csv', delimiter=',')
clf.fit(data[:,:2], data[:,2])
|
|
Latitude
(Themenstarter)
Anmeldungsdatum: 10. November 2012
Beiträge: 196
|
Sorry, hatte wenig Zeit und die VM wollte sich nicht einfach auf den neuen PC kopieren lassen... sebix schrieb: Laut Dokumentation muss X eine n*n Matrix sein, und y ein n-Array. In deinem Fall hast du nur zwei eindimensionale Arrays. Im uebrigen musst du nicht das File zweimal einlesen. Ich weiss nicht welche Spalten dann in deinem Fall X oder y sein sollen, aber das kannst du ja selbst anpassen: | data = np.genfromtxt('rolles_nothing_result.csv', delimiter=',')
clf.fit(data[:,:2], data[:,2])
|
Danke, das funktioniert soweit. Jetzt funktioniert nur das "eingabe" in "predict = " nichtmehr, aber das ist ein anderes Thema^^
|