sklearn scikit predictions neighbors nearest learn iris fit example python python-3.x machine-learning predict

python - scikit - sklearn example



error en la secuencia de comandos de Python "Se esperaba una matriz 2D, en su lugar se obtuvo una matriz 1D:”? (4)

El problema está ocurriendo cuando ejecuta la predicción en la matriz [0.58,0.76] . Arregle el problema cambiándolo de forma antes de llamar a predict() :

import numpy as np import matplotlib.pyplot as plt from matplotlib import style style.use("ggplot") from sklearn import svm x = [1, 5, 1.5, 8, 1, 9] y = [2, 8, 1.8, 8, 0.6, 11] plt.scatter(x,y) plt.show() X = np.array([[1,2], [5,8], [1.5,1.8], [8,8], [1,0.6], [9,11]]) y = [0,1,0,1,0,1] clf = svm.SVC(kernel=''linear'', C = 1.0) clf.fit(X,y) test = np.array([0.58, 0.76]) print test # Produces: [ 0.58 0.76] print test.shape # Produces: (2,) meaning 2 rows, 1 col test = test.reshape(1, -1) print test # Produces: [[ 0.58 0.76]] print test.shape # Produces (1, 2) meaning 1 row, 2 cols print(clf.predict(test)) # Produces [0], as expected

Estoy siguiendo este tutorial para hacer esta predicción de ML:

Tutorial de enlaces

import numpy as np import matplotlib.pyplot as plt from matplotlib import style style.use("ggplot") from sklearn import svm x = [1, 5, 1.5, 8, 1, 9] y = [2, 8, 1.8, 8, 0.6, 11] plt.scatter(x,y) plt.show() X = np.array([[1,2], [5,8], [1.5,1.8], [8,8], [1,0.6], [9,11]]) y = [0,1,0,1,0,1] X.reshape(1, -1) clf = svm.SVC(kernel=''linear'', C = 1.0) clf.fit(X,y) print(clf.predict([0.58,0.76]))

Estoy usando Python 3.6 y obtengo el error "Se esperaba una matriz 2D, se obtuvo una matriz 1D:" Creo que la secuencia de comandos es para versiones anteriores, pero no sé cómo convertirla a la versión 3.6.

Ya intente con el:

X.reshape(1, -1)


La matriz X e Y de la Variable Independiente y la Variable Dependiente, respectivamente, a DataFrame del tipo int64 para que se convierta de una matriz 1D a una matriz 2D. Es de clase pandas en python. y por lo tanto, la escala de características a su vez no conduce a ningún error!


Me enfrenté al mismo problema, excepto que el tipo de datos de la instancia que quería predecir era un objeto panda.Series .

Bueno, solo necesitaba predecir una instancia de entrada. Lo tomé de una parte de mis datos.

df = pd.DataFrame(list(BiogasPlant.objects.all())) test = df.iloc[-1:] # sliced it here

En este caso, deberá convertirlo en una matriz 1-D y luego volver a darle reshape .

test2d = test.values.reshape(1,-1)

De los docs , los values convertirán Series en una matriz numpy.


Se supone que debe proporcionar el método de predict con la misma matriz 2D, pero con un valor que desea procesar (o más). En resumen, simplemente puede reemplazar

[0.58,0.76]

Con

[[0.58,0.76]]

Y deberia funcionar