Preprocesamiento en scikit learn-muestra única-Advertencia de depreciación
En una nueva instalación de Anaconda bajo Ubuntu... Estoy preprocesando mis datos de varias maneras antes de una tarea de clasificación usando Scikit-Learn.
from sklearn import preprocessing
scaler = preprocessing.MinMaxScaler().fit(train)
train = scaler.transform(train)
test = scaler.transform(test)
Todo esto funciona bien, pero si tengo una nueva muestra (temp a continuación) que quiero clasificar (y por lo tanto quiero preprocesar de la misma manera, entonces obtengo
temp = [1,2,3,4,5,5,6,....................,7]
temp = scaler.transform(temp)
Entonces recibo una advertencia de desaprobación...
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.
Así que la pregunta es ¿cómo debería reescalar una sola muestra como esta?
Supongo que una alternativa (no muy bueno) sería...
temp = [temp, temp]
temp = scaler.transform(temp)
temp = temp[0]
Pero estoy seguro de que hay mejores maneras.
5 answers
Solo escucha lo que la advertencia te está diciendo:
Cambia la forma de tus datos X. cambia la forma (-1, 1) si tus datos tienen una sola característica o X. remodelar (1, -1) si contiene una sola muestra.
Para su tipo de ejemplo (si tiene más de una característica):
temp = temp.reshape(1,-1)
Para una característica:
temp = temp.reshape(-1,1)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-30 02:23:56
Bueno, en realidad parece que la advertencia te está diciendo qué hacer.
Como parte de sklearn.pipeline
interfaces uniformes de las etapas , como regla general:
Cuando vea
X
, debe ser unnp.array
con dos dimensionesCuando vea
y
, debe ser unnp.array
con una sola dimensión.
Aquí, por lo tanto, usted debe considerar lo siguiente:
temp = [1,2,3,4,5,5,6,....................,7]
# This makes it into a 2d array
temp = np.array(temp).reshape((len(temp), 1))
temp = scaler.transform(temp)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-29 10:32:16
Esto podría ayudar
temp = ([[1,2,3,4,5,6,.....,7]])
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-30 10:12:13
Me enfrenté al mismo problema y recibí la misma advertencia de desaprobación. Estaba usando una matriz numpy de [23, 276] cuando recibí el mensaje. Intenté remodelarlo según la advertencia y terminé en ninguna parte. Luego selecciono cada fila de la matriz numpy (como estaba iterando sobre ella de todos modos) y la asigné a una variable de lista. Funcionó entonces sin previo aviso.
array = []
array.append(temp[0])
Entonces puede usar el objeto python list (aquí 'array') como entrada para las funciones sk-learn. No es la solución más eficiente, pero funcionó para mí.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-19 07:35:08
.values.reshape(-1,1)
se aceptarán sin alertas/advertencias
.reshape(-1,1)
será aceptado, pero con la guerra de desaprobación
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-25 02:43:24