gpt4 book ai didi

python - scikit学习: RandomForestRegressor : ValueError when training

转载 作者:太空宇宙 更新时间:2023-11-03 21:05:01 26 4
gpt4 key购买 nike

我有一个包含我的标签的 pandas 系列 s 和一个包含我的数据的 pandas DataFrame df 。我想使用 sklearn RandomForestRegressor 生成标签的预测。

model = RandomForestRegressor(n_estimators=1000, max_depth= 30 , random_state=31415)
model.fit(df, s)

但是当我这样做时,.fit() 抛出以下异常:

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

我真的不明白为什么会出现这个错误。我的标签和 DataFrame 的所有列都是数字:

print(s.describe(), header=True)

count 1168.000000
mean 181193.444349
std 81756.636708
min 34900.000000
25% 129000.000000
50% 160000.000000
75% 214600.000000
max 755000.000000
Name: Label, dtype: float64

print(df.describe())

Field1 Field2 Field3 Field4 Field5 Field6 Field7 Field8
count 1168.000000 1168.000000 1168.000000 1168.000000 1168.000000 1168.000000 1168.000000 1168.000000
mean 6.080479 1519.982877 1.749144 1057.800514 0.973459 1.556507 1970.724315 1984.442637
std 1.392363 540.953069 0.760811 444.809832 0.160807 0.554077 29.939059 20.626356
min 1.000000 334.000000 0.000000 0.000000 0.000000 0.000000 1872.000000 1950.000000
25% 5.000000 1123.750000 1.000000 795.750000 1.000000 1.000000 1953.750000 1966.000000
50% 6.000000 1465.000000 2.000000 990.000000 1.000000 2.000000 1972.000000 1993.000000
75% 7.000000 1786.000000 2.000000 1291.500000 1.000000 2.000000 2000.000000 2003.000000
max 10.000000 5642.000000 4.000000 6110.000000 1.000000 3.000000 2010.000000 2010.000000

我在 sdf 中也没有空值:

print(np.isnan(s).unique())

[False]


print(df.isnull().sum().sort_values(ascending=False))

Field8 0
Field7 0
Field5 0
Field5 0
Field4 0
Field3 0
Field2 0
Field1 0
dtype: int64

我什至手动检查了我的数据,没有看到任何奇怪的值。

什么可能导致此错误?

编辑:

在尝试了多种方法之后,我找到了一个解决方案(即使我不太明白为什么这可以解决我的问题)。

就我而言,添加

df.reset_index(drop=True)

.fit() 调用解决问题之前(如建议的 here )。如果有人了解这里发生了什么,我很感兴趣。

最佳答案

这可能是由于数据存在巨大差异(例如字段 1 的范围为:~1 到~10,字段 2 的范围为:~300 到~5000)

尝试应用特征缩放,然后拟合模型。

缩放器 = MinMaxScaler()

df = 缩放器.fit_transform(df)

关于python - scikit学习: RandomForestRegressor : ValueError when training,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55470746/

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