Как конвертировать и кодировать переменные, которые являются объектами? - PullRequest
0 голосов
/ 14 октября 2019

У меня есть некоторые переменные, которые классифицируются как объекты. Я создал для них фиктивные переменные, но мне было интересно, как кодировать сам столбец, из которого я создал фиктивные переменные, если я даже должен это делать, чтобы избавиться от текста и сделать код текста числовым. Отфильтровываю ли я столбцы объектов при анализе (отбрасываю столбец)? Нужно ли менять столбец с «объекта» на категориальный?

import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
project = pd.read_csv('c:/users/Brandon Thomas/Project.csv')

X = project.drop("Bad Indicator",axis=1)   #Feature Matrix
y = project["Bad Indicator"]      #Target Variable

project.info()
Note Bankruptcy Code                         57642 non-null float64
Performance                                  57642 non-null object
Short Accrual                                57642 non-null object
Past Due Grouping                            57642 non-null object
Worst Performance                            57642 non-null object
90+ Perf                                     57642 non-null int64
Bankruptcy Code                              57642 non-null object
Bad Indicator                                57642 non-null int64
RR Downgrade                                 57642 non-null object
Beacon Range                                 57642 non-null object
Product Grouping                             57642 non-null object
Final Product Grouping                       57642 non-null object
dtypes: float64(10), int64(8), object(15)

from sklearn.preprocessing import LabelEncoder

lb_make = LabelEncoder()
project["Bankruptcy Code"] = lb_make.fit_transform(project["Bankruptcy 
Code"])
project[["Bankruptcy Code", "Bankruptcy Code Num"]].head(11)

TypeError                                 Traceback (most recent call 
last)
~\Anaconda3\lib\site-packages\sklearn\preprocessing\label.py in 
_encode(values, uniques, encode)
    104         try:
--> 105             res = _encode_python(values, uniques, encode)
    106         except TypeError:

~\Anaconda3\lib\site-packages\sklearn\preprocessing\label.py in 
_encode_python(values, uniques, encode)
     58     if uniques is None:
---> 59         uniques = sorted(set(values))
     60         uniques = np.array(uniques, dtype=values.dtype)

TypeError: '<' not supported between instances of 'str' and 'float'

During handling of the above exception, another exception occurred:

TypeError                                 Traceback (most recent call 
last)
<ipython-input-209-f7197bc53834> in <module>
      2 
      3 lb_make = LabelEncoder()
----> 4 project["Bankruptcy Code"] = 
lb_make.fit_transform(project["Bankruptcy Code"])
      5 project[["Bankruptcy Code", "Bankruptcy Code Num"]].head(11)

~\Anaconda3\lib\site-packages\sklearn\preprocessing\label.py in 
fit_transform(self, y)
    234         """
    235         y = column_or_1d(y, warn=True)
--> 236         self.classes_, y = _encode(y, encode=True)
    237         return y
    238 

~\Anaconda3\lib\site-packages\sklearn\preprocessing\label.py in 
_encode(values, uniques, encode)
    105             res = _encode_python(values, uniques, encode)
    106         except TypeError:
--> 107             raise TypeError("argument must be a string or number")
    108         return res
    109     else:

TypeError: argument must be a string or number
...