gpt4 book ai didi

python - Scikit 的 LabelEncoder 使用 `numpy.int64` 而不是 `inverse_transform` 中的整数

转载 作者:行者123 更新时间:2023-11-30 08:56:48 26 4
gpt4 key购买 nike

如果您在 inverse_transform 期间出于某种原因拟合 sklearn.preprocessing.LabelEncoder 类型为 int 的标签> 它返回 numpy.int64 类型标签。

from sklearn.preprocessing import LabelEncoder
labels = [2,4,6] # just a list of `int`s
e = LabelEncoder().fit(labels)
encoded = e.transform([4,6,2])
decoded = e.inverse_transform(encoded)
type(decoded[0])
# returns <class 'numpy.int64'>

所以我想我有两个问题

  1. 为什么要这样做?
  2. 如果没有自定义代码,如何避免这种情况?

(当 Flask 的 jsonify 无法将 np.int64 编码为 JSON 时,我遇到了这个问题)

最佳答案

Why would it do that?

因为 transforminverse_transform 返回 numpy 数组并且

An item extracted from an array, e.g., by indexing, will be a Python object whose type is the scalar type associated with the data type of the array.

在本例中,标量类型为 int64

How can someone avoid that without custom code?

如果您需要获取单个元素,请使用decoded.item(0)。如果您需要整个数组,请使用decoded.tolist()。请参阅Converting numpy dtypes to native python types了解更多。

关于python - Scikit 的 LabelEncoder 使用 `numpy.int64` 而不是 `inverse_transform` 中的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56802747/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com