使用numpy编码数据集的分类要素时出错

时间:2017-04-24 14:59:00

标签: pandas numpy scikit-learn feature-extraction

我使用以下函数对我的数据集的分类特征进行编码(它有27个特征,其中11个是绝对的):

from sklearn import preprocessing
def features_encoding(data):
    columnsToEncode = list(data.select_dtypes(include=['category', 'object']))
    le = preprocessing.LabelEncoder()
    for feature in columnsToEncode:
        try:
            data[feature] = le.fit_transform(data[feature])
        except:
            continue
    return data

但是我收到了这个错误:

FutureWarning: numpy not_equal will not check object identity in the future. The comparison did not return the same result as suggested by the identity (`is`)) and will change.
      flag = np.concatenate(([True], aux[1:] != aux[:-1]))

我不明白这个错误。那么,有人可以解释它是什么以及如何解决它?

1 个答案:

答案 0 :(得分:2)

这几乎可以肯定是由np.nan传递给dtype=object的数组np.unique中不止一次造成的。

这可能有助于澄清正在发生的事情:

>>> np.nan is np.nan
True
>>> np.nan == np.nan
False
>>> np.array([np.nan], dtype=object) == np.array([np.nan], dtype=object)
FutureWarning: numpy equal will not check object identity in the future. The comparison did not return the same result as suggested by the identity (`is`)) and will change.
array([ True], dtype=bool)

因此,当比较两个dtype=object数组时,numpy会检查比较函数的返回值是否为False,当两个被比较的对象完全相同时。因为现在它假设所有对象都比较自己,但将来会同时更改。

总而言之,这只是一个警告,所以你可以忽略它,至少现在......