Python 如何在标签编码器中解析“参数必须是字符串或数字”?

Python 如何在标签编码器中解析“参数必须是字符串或数字”?,python,scikit-learn,Python,Scikit Learn,我的数据集。dataset_train有43个分类特性,我想在每一列中应用LabelEncoder。 这里我得到了所有的分类特征:分类特征=[数据集特征的特征].columns如果数据集特征[features].dtype=='O'] 现在创建一个类来执行多标签编码: class MultiColumnLabelEncoder: def __init__(self,columns = None): self.columns = columns # array of column name

我的数据集。dataset_train有43个分类特性,我想在每一列中应用LabelEncoder。 这里我得到了所有的分类特征:分类特征=[数据集特征的特征].columns如果数据集特征[features].dtype=='O']

现在创建一个类来执行多标签编码:

class MultiColumnLabelEncoder:
def __init__(self,columns = None):
    self.columns = columns # array of column names to encode

def fit(self,X,y=None):
    return self # not relevant here

def transform(self,X):
    output = X.copy()
    if self.columns is not None:
        for col in self.columns:
            output[col] = LabelEncoder().fit_transform(output[col])
    else:
        for colname,col in output.iteritems():
            output[colname] = LabelEncoder().fit_transform(col)
    return output

def fit_transform(self,X,y=None):
    return self.fit(X,y).transform(X)
现在执行后:

from sklearn.preprocessing import LabelEncoder

dataset_train = MultiColumnLabelEncoder(columns = categorical_features).fit_transform(dataset_train)  
它向我展示了:

TypeError: argument must be a string or number
请注意,-NaN值也在前面处理过

如何处理这种情况???

好的,问题解决了。 我的一个分类功能只有一个NaN值

之前,我编写了以下代码以获取包含NaN值的分类_功能: Category_features=[数据集_train中的特征的特征。如果数据集_train[feature].isnull.sum>1和数据集_train[feature],则列数为[feature]。数据类型=='O']

这就是为什么我得到了那些在其列中有超过1个缺少值的特性

这就是我面对这个错误的原因

现在,在我将上述代码修改为: Category_features=[数据集_train中的要素的要素。如果数据集_train[feature].isnull.sum>=1和数据集_train[feature].dtype=='O']

现在我得到了每一列,即使只有一个NaN值

它可以为我在问题中提到的MultiColumnLabelEncoder执行上述代码


谢谢合作♥️.

你能包括完整的回溯吗?而Category_特性的值您应该只使用OrdinalCoder,使用ColumnTransformer对列进行子集,而不是通过黑客攻击自定义类来滥用LabelEncoder。