2017-05-12 6 views
0

Scikit-Learn Wenn ichIndexerror: zu viele Indizes für Array für

import numpy as np 
from sklearn.cluster import MeanShift, estimate_bandwidth 
estimate_bandwidth(np.array([1,2,3,4,5,6])) 

laufen bekomme ich die Fehler

Traceback (most recent call last): 
    File "<input>", line 1, in <module> 
    File "[..]/anaconda2/envs/reifen/lib/python2.7/site-packages/sklearn/cluster/mean_shift_.py", line 72, in estimate_bandwidth 
    d, _ = nbrs.kneighbors(X[batch, :], return_distance=True) 
IndexError: too many indices for array 

Ich verstehe, dass die Dimensionalität des Arrays nicht richtig ist - aber ich bin nicht sicher, was ich hier falsch gemacht habe - der Code ist nicht so lang. Kann schedule_bandwidth nur mit multivariaten Daten verwendet werden?

+0

Sie sollten die Dokumentation lesen - http://scikit-learn.org/stable/modules/generated/sklearn.cluster.estimate_bandwidth.html – Craicerjack

+1

@Craicerjack: Ich habe es getan, habe aber nichts darüber gelesen. Beim nochmaligen Lesen habe ich jedoch festgestellt, dass ich für den univariaten Fall '.reshape ((6, 1))' hinter dem Array verwenden muss. Vielen Dank. – Make42

Antwort

1

Ypu sollte so etwas tun:

import numpy as np 
from sklearn.cluster import MeanShift, estimate_bandwidth 

array = np.array([1,2,3,4,5,6]) 

d = estimate_bandwidth(array.reshape(len(array),1)) 
+0

Obwohl das genau das ist, was ich gerade kommentiert habe ;-) - es ist * die richtige Lösung. – Make42

+0

ich denke, wir haben zur gleichen Zeit gepostet .... –

+0

Ja. wahrscheinlich :-). Das passiert. – Make42

Verwandte Themen