gpt4 book ai didi

python - 从 pandas DataFrame 转换为原始 numpy 数组可以提高 ML 性能吗?

转载 作者:太空宇宙 更新时间:2023-11-03 11:23:36 25 4
gpt4 key购买 nike

pandas DataFrame 具有固定整数数据类型 ( int64) 的限制。 NumPy 数组没有这个限制;例如,我们可以使用 np.int8(我们也有不同的浮点大小可用)。 (限制不再存在。)

如果我们首先将 DataFrame 转换为具有缩小数据类型的原始 NumPy 数组(例如来自 np.float64np.float16)?如果是这样,这种可能的性能提升是否仅在内存有限时发挥作用?

相对于计算大小和复杂性,似乎真正高的浮点精度通常对 ML 并不重要。

如果需要更多上下文,我正在考虑像 RandomForestRegressor 这样的集成学习器的应用到大型数据集(4-16GB,数千万条记录,包含约 10-50 个特征)。不过,我对一般情况最感兴趣。

最佳答案

RandomForestRegressor 的文档指出输入样本将在内部转换为 dtype=np.float32


下面是原始答案,解决了在 Pandas 中使用自定义 numpy 类型的问题(问题的删除线部分)

您可以在 Pandas 中使用 numpy 数据类型。这是导入具有指定列数据类型的 .csv 文件的示例(来 self 的脚本):

df = pd.read_csv(filename, usecols=[0, 4, 5, 10],
dtype={0: np.uint8,
4: np.uint32,
5: np.uint16,
10: np.float16})

您可以使用 Series.astype() 更改现有系列或现有 DataFrame 中列的数据类型:

s = pd.Series(...)
s = s.astype(np.float16)

df = pd.DataFrame(...)
df['col1'] = df['col1'].astype(np.float16)

如果你想更改 DataFrame 中多个列的数据类型,甚至所有列的数据类型,请使用 DataFrame.astype() :

df = pd.DataFrame(...)
df[['col1', 'col2']] = df[['col1', 'col2']].astype(np.float16)

关于python - 从 pandas DataFrame 转换为原始 numpy 数组可以提高 ML 性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38100153/

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