Python 如何在标签编码器中解析“参数必须是字符串或数字”?
我的数据集。dataset_train有43个分类特性,我想在每一列中应用LabelEncoder。 这里我得到了所有的分类特征:分类特征=[数据集特征的特征].columns如果数据集特征[features].dtype=='O'] 现在创建一个类来执行多标签编码: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
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。