У меня есть фрейм данных, который содержит числовые и нечисловые столбцы.Я хотел бы кодировать только нечисловые столбцы и сохранить значение числовых столбцов, как они есть.Когда я пытаюсь кодировать с помощью своего кода, он кодирует все столбцы.
Вы можете помочь решить эту проблему, пожалуйста?
Спасибо
Вот мой код Python
from sklearn.base import BaseEstimator
from sklearn.base import TransformerMixin
from sklearn.preprocessing import LabelEncoder
class CustomImputer(BaseEstimator, TransformerMixin):
def __init__(self, strategy='mode',filler='NA'):
self.strategy = strategy
self.fill = filler
def fit(self, X, y=None):
if self.strategy in ['mean','median']:
if not all(X.dtypes == np.number):
raise ValueError('dtypes mismatch np.number dtype is \
required for '+ self.strategy)
if self.strategy == 'mean':
self.fill = X.mean()
elif self.strategy == 'median':
self.fill = X.median()
elif self.strategy == 'mode':
self.fill = X.mode().iloc[0]
elif self.strategy == 'fill':
if type(self.fill) is list and type(X) is pd.DataFrame:
self.fill = dict([(cname, v) for cname,v in zip(X.columns, self.fill)])
return self
def transform(self, X, y=None):
return X.fillna(self.fill)
data3=CustomImputer(strategy='mode').fit_transform(data2)