我使用以下函数对我的数据集的分类特征进行编码(它有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]))
我不明白这个错误。那么,有人可以解释它是什么以及如何解决它?
答案 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
,当两个被比较的对象完全相同时。因为现在它假设所有对象都比较自己,但将来会同时更改。
总而言之,这只是一个警告,所以你可以忽略它,至少现在......