【发布时间】:2018-12-27 21:50:17
【问题描述】:
我正在尝试为我的向量的第四个特征编码分类数据,该特征位于一个 numpy 数组中。类别是“4”或“6”。我可以使用以下方法将它们更改为二进制:
features_in_training_set = [[0 0 0 0 4], [0 0 0 0 4], [0 0 0 0 6],[0 0 0 0 4],[0 0 0 0 6]]
features_in_training_set[:,4] = LabelEncoder().fit_transform(features_in_training_set[:,4])
但是,当然,我需要更改它,以便分类器不会认为“4”大于“6”。但是,当我运行以下命令时:
onehotencoder = OneHotEncoder(categorical_features=[4], handle_unknown='ignore')
features_in_training_set = onehotencoder.fit_transform(features_in_training_set).toarray()
我收到的错误是:
TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
TypeError: Wrong type for parameter `n_values`. Expected 'auto', int or array of ints, got <class 'numpy.ndarray'>
我检查了我是否有任何缺失值或任何字符串,但我没有。所有特征都是整数。
谢谢。
【问题讨论】:
-
逗号在哪里?
features_in_training_set = [[0 0 0 0 4], [0 0 0 0 4], [0 0 0 0 6],[0 0 0 0 4],[0 0 0 0 6]] -
@Konstantin 这是一个 numpy 数组。 numpy 数组有逗号吗?
-
加载后为numpy数组。它在哪里转换为 numpy 数组?当您编写这样的代码时,它是一个列表列表,应该有逗号。
标签: python scikit-learn sklearn-pandas