2017-08-23 3 views
0

Ich weiß ValueError Frage wurde gestellt viele times. Ich kämpfe immer noch, um eine Antwort zu finden, weil ich in meinem Code verwende.ValueError: Operanden konnten nicht zusammen mit Shapes gesendet werden - inverse_transform- Python

sagen, dass ich ein Array a

a.shape 
> (100,20) 

und ein weiteres Array b

b.shape 
> (100,3) 

Wenn ich habe ein np.concatenate,

hat = np.concatenate((a, b), axis=1) 

Jetzt Form von hat ist

haben
hat.shape  
(100,23) 

Danach habe ich versucht, dies zu tun,

inversed_hat = scaler.inverse_transform(hat) 

Wenn ich das tue, erhalte ich eine Fehlermeldung:

ValueError: operands could not be broadcast together with shapes (100,23) (25,) (100,23)

Ist das Broadcast-Fehler in inverse_transform? Jeder Vorschlag wird hilfreich sein. Danke im Voraus!

Antwort

0

Obwohl Sie nicht angegeben haben, nehme ich an, Sie verwenden inverse_transform() von scikit lernen StandardScaler . Sie müssen zuerst die Daten anpassen.

import numpy as np 
from sklearn.preprocessing import MinMaxScaler 


In [1]: arr_a = np.random.randn(5*3).reshape((5, 3)) 

In [2]: arr_b = np.random.randn(5*2).reshape((5, 2)) 

In [3]: arr = np.concatenate((arr_a, arr_b), axis=1) 

In [4]: scaler = MinMaxScaler(feature_range=(0, 1)).fit(arr) 

In [5]: scaler.inverse_transform(arr) 
Out[5]: 
array([[ 0.19981115, 0.34855509, -1.02999482, -1.61848816, -0.26005923], 
     [-0.81813499, 0.09873672, 1.53824716, -0.61643731, -0.70210801], 
     [-0.45077786, 0.31584348, 0.98219019, -1.51364126, 0.69791054], 
     [ 0.43664741, -0.16763207, -0.26148908, -2.13395823, 0.48079204], 
     [-0.37367434, -0.16067958, -3.20451107, -0.76465428, 1.09761543]]) 

In [6]: new_arr = scaler.inverse_transform(arr) 

In [7]: new_arr.shape == arr.shape 
Out[7]: True 
+0

Vielen Dank für Ihre Antwort, ich weiß, ich hätte erwähnen sollen, ich habe 'MinMaxScaler' verwendet. Zum Beispiel: 'scaler = MinMaxScaler (feature_range = (0, 1))'. –

+0

@Jesse bearbeitet. – gobrewers14

+0

Ich habe deine Antwort versucht, es funktioniert, wenn ich "fit" habe, aber ich habe "fit_transform" es gibt einen Fehler "AttributeError: 'numpy.darray' Objekt hat kein Attribut 'inverse_transform''. Ich habe 'fit_transform' verwendet. Weißt du, warum das passiert? Ich suche danach. –

Verwandte Themen