gpt4 book ai didi

python-3.x - 如何将数据类型更改为 float64 以便 sklearn 可以在数据大于 np.float32 的数据帧上工作

转载 作者:行者123 更新时间:2023-11-30 08:32:09 27 4
gpt4 key购买 nike

在我的数据集中,很少有数据(即 1.4619664882428694e+258)大于 float32 最大值(3.4028235e+38) >)。现在在拟合模型期间我收到以下错误:

Input contains NaN, infinity or a value too large for dtype('float32').

我尝试了以下代码:

df_features = pd.read_csv('data\df_features.csv')
df_target = pd.read_csv('data\df_target.csv')

X_train, X_test, y_train, y_test = train_test_split(df_features, df_target, test_size=.25, random_state=0)

model = AdaBoostRegressor()

try:
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
acc = r2_score(y_test, y_pred)
print(acc)

except Exception as error:
print(error)

如果我想使用真实数据而不进行归一化,如何解决这个问题?是否有任何选项可以将 sklearn 的默认数据类型设置为 float64。如果是这样那怎么办?

最佳答案

这可能不是问题的直接答案,但我认为出于实际目的,它应该作为数据科学问题来解决。

首先,1.4e258 的值让人感觉相当可疑,因为很难想象它在哪里可能具有有意义的物理意义。此类极端值可能会严重破坏您的指标和模型。问题应该是它是否是异常值。答案取决于您的数据及其含义。

  • 如果它是一个异常(如极值),正确的方法可能是完全删除该实例。这可能会提高训练模型在其余实例上的性能。缺点是模型在该实例或类似的极端值上表现不佳。实际上,这要求您让使用该模型的每个人都意识到其对这些极值的限制。

  • 如果它不是异常值,您应该考虑对其进行修改,使其为人类和机器提供更多信息。这可能意味着使用更有意义的标度,例如对数标度:它对于人类来说更容易操作,并且可能避免重大的计算问题。另一种方法是使用某种重整化。例如,如果您的所有值都在 1e250 和 1e260 之间,您可以将它们除以 1e255。如果采用此类值的变量取决于另一个变量,您可能会通过该值或其幂之一重新规范化,就像如果它是一个卷,您可能需要通过大小变量的 3 次方重新规范化。这可能会有所帮助,既可以避免 sklearn 计算问题,又可以制作更有意义的模型。

关于python-3.x - 如何将数据类型更改为 float64 以便 sklearn 可以在数据大于 np.float32 的数据帧上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58857780/

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