Как преобразовать данные метки со значениями None в OneHot с помощью LabelBinarizer sklearn - PullRequest
0 голосов
/ 09 октября 2018

У меня есть данные метки, которые совпадают со значениями np.nan.
Я хочу преобразовать данные в вектор OneHot, используя LabelBinarizer , а np.nan преобразует в нулевой массив.
Но я получаю ошибку.Мне удалось преобразовать данные с get_dummies из pandas модели.Я не могу использовать функцию get_dummies, потому что поезд и тестовые данные приходят с разными файлами и разным временем.Я хочу использовать sklearn модель, чтобы сохранить ее, и использовать последнюю модель.

Код например:

In[11]: df = pd.DataFrame({'CITY':['London','NYC','Manchester',np.nan],'Country':['UK','US','UK','AUS']})
In[12]: df
Out[12]: 
         CITY Country
0      London      UK
1         NYC      US
2  Manchester      UK
3         NaN     AUS
In[13]: pd.get_dummies(df['CITY'])
Out[13]: 
   London  Manchester  NYC
0       1           0    0
1       0           0    1
2       0           1    0
3       0           0    0
In[14]: from sklearn.preprocessing import LabelBinarizer
        lb = LabelBinarizer()
In[15]: lb.fit_transform(df['CITY'])

Traceback (most recent call last):
  File "/home/oshrib/.conda/envs/on_target/lib/python3.5/site-packages/IPython/core/interactiveshell.py", line 2963, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-16-d0afb38b2695>", line 1, in <module>
    lb.fit_transform(df['CITY'])
  File "/home/oshrib/.conda/envs/on_target/lib/python3.5/site-packages/sklearn/preprocessing/label.py", line 307, in fit_transform
    return self.fit(y).transform(y)
  File "/home/oshrib/.conda/envs/on_target/lib/python3.5/site-packages/sklearn/preprocessing/label.py", line 276, in fit
    self.y_type_ = type_of_target(y)
  File "/home/oshrib/.conda/envs/on_target/lib/python3.5/site-packages/sklearn/utils/multiclass.py", line 288, in type_of_target
    if (len(np.unique(y)) > 2) or (y.ndim >= 2 and len(y[0]) > 1):
  File "/home/oshrib/.conda/envs/on_target/lib/python3.5/site-packages/numpy/lib/arraysetops.py", line 223, in unique
    return _unique1d(ar, return_index, return_inverse, return_counts)
  File "/home/oshrib/.conda/envs/on_target/lib/python3.5/site-packages/numpy/lib/arraysetops.py", line 283, in _unique1d
    ar.sort()
TypeError: unorderable types: float() < str()
...