Ich konnte das Beispiel in der Github Repo replizieren reproduzieren. Als ich jedoch meine eigenen Daten ausprobierte, bekam ich den ValueError.Sklearn-Pandas DataFrameMapper: Mapper.Fit_Transform gibt ValueError: schlechte Eingabe Shape (8, 2)
Unten ist ein Dummy-Daten, die den gleichen Fehler wie meine echten Daten gibt.
import pandas as pd
import numpy as np
from sklearn_pandas import DataFrameMapper
from sklearn.preprocessing import LabelEncoder, StandardScaler, MinMaxScaler
data = pd.DataFrame({'pet':['cat', 'dog', 'dog', 'fish', 'cat', 'dog','cat','fish'], 'children': [4., 6, 3, 3, 2, 3, 5, 4], 'salary': [90, 24, 44, 27, 32, 59, 36, 27], 'feat4': ['linear', 'circle', 'linear', 'linear', 'linear', 'circle', 'circle', 'linear']})
mapper = DataFrameMapper([
(['pet', 'feat4'], LabelEncoder()),
(['children', 'salary'], [StandardScaler(),
MinMaxScaler()])
])
np.round(mapper.fit_transform(data.copy()),2)
Unten finden Sie die Fehler
ValueError Traceback (most recent call last) in() ----> 1 np.round(mapper.fit_transform(data.copy()),2)
C:\Users\E245713\AppData\Local\Continuum\Anaconda3\lib\site-packages\sklearn\base.py in fit_transform(self, X, y, **fit_params) 453 if y is None: 454 # fit method of arity 1 (unsupervised transformation) --> 455 return self.fit(X, **fit_params).transform(X) 456 else: 457 # fit method of arity 2 (supervised transformation)
C:\Users\E245713\AppData\Local\Continuum\Anaconda3\lib\site-packages\sklearn_pandas\dataframe_mapper.py in fit(self, X, y) 95 for columns, transformers in self.features: 96 if transformers is not None: ---> 97 transformers.fit(self._get_col_subset(X, columns)) 98 return self 99
C:\Users\E245713\AppData\Local\Continuum\Anaconda3\lib\site-packages\sklearn\preprocessing\label.py in fit(self, y) 106 self : returns an instance of self. 107 """ --> 108 y = column_or_1d(y, warn=True) 109 _check_numpy_unicode_bug(y) 110 self.classes_ = np.unique(y)
C:\Users\E245713\AppData\Local\Continuum\Anaconda3\lib\site-packages\sklearn\utils\validation.py in column_or_1d(y, warn) 549 return np.ravel(y) 550 --> 551 raise ValueError("bad input shape {0}".format(shape)) 552 553
ValueError: bad input shape (8, 2)
Kann jemand helfen?
dank
Dank @ Jeff carey ! Ich vermutete, dass mein Fehler von dieser Zeile kam, konnte aber nicht herausfinden warum. Ich wurde auf den Teil des Dokuments fixiert, der besagt, dass man mehrere Spalten mit einem Transformator machen kann. Ich schätze, das hängt vom Transformator ab ... gut zu wissen! Wie für die (['Kinder', 'Gehalt'], funktioniert [StandardScaler(), MinMaxScaler()]) tatsächlich für mehrere Spalten und mehrere Transformatoren im selben Tupel (für diese Transformatoren mindestens ...). Danke noch einmal! – wi3o
Darüber hinaus bietet der Master-Zweig von Github die Möglichkeit, einen Standard-Transformer auf Spalten anzuwenden, die nicht explizit im Transformer aufgelistet sind, falls dies für Sie nützlich ist: https://github.com/paulgb/sklearn-pandas#applying-a- Standard-Transformator – dukebody
@Dukebody danke! – wi3o