В моем DataFrame Pandas есть столбец под названием «Задание». Я создал простой и настраиваемый преобразователь, который будет отображать значения в этом столбце, соответствующие типу задания. Проблема возникает, когда после сопоставления значений и их проверки столбец теперь имеет тип данных с плавающей запятой.
[Вот изображение, см. столбец «задание»]
( https://i.sstatic.net/yrImfOe0.png)
Я решил, что это может повлиять на производительность моей модели DecisionTreeClassifier и модели классификатора опорных векторов.
Вот фрагмент кода пользовательского преобразователя, который я использовал
Код: Выделить всё
class PreprocessJobColumn (BaseEstimator, TransformerMixin):
def __init__ (self):
self.dictionary_map = {
"admin" : 1,
"blue-collar" : 2,
"entrepreneur" : 3,
"housemaid" : 4,
"management" : 5,
"retired" : 6,
"self-employed" : 7,
"services" : 8,
"student" : 9,
"technician" : 10,
"unemployed" : 11
}
def map_job_values (self, element_to_process):
if element_to_process in self.dictionary_map.keys():
return self.dictionary_map.get(element_to_process, -1)
def fit_transform(self, X):
# Create a copy of the dataset
features_dataset_copy = X.copy()
# Mapping values
features_dataset_copy["job"] = features_dataset_copy["job"].apply(self.map_job_values)
features_dataset_copy["job"] = features_dataset_copy["job"].astype("int64")
return features_dataset_copy
Код: Выделить всё
---------------------------------------------------------------------------
IntCastingNaNError Traceback (most recent call last)
in ()
2 preprocess_education_column = PreprocessEducationColumn()
3
----> 4 df_copy = preprocess_job_column.fit_transform(df_copy)
5 df_copy = preprocess_education_column.fit_transform(df_copy)
9 frames
/usr/local/lib/python3.10/dist-packages/pandas/core/dtypes/astype.py in _astype_float_to_int_nansafe(values, dtype, copy)
143 """
144 if not np.isfinite(values).all():
--> 145 raise IntCastingNaNError(
146 "Cannot convert non-finite values (NA or inf) to integer"
147 )
IntCastingNaNError: Cannot convert non-finite values (NA or inf) to integer
Подробнее здесь: https://stackoverflow.com/questions/791 ... -data-type