【问题标题】:Error trying to run Random Forest Regression尝试运行随机森林回归时出错
【发布时间】:2021-07-01 04:34:19
【问题描述】:

这是我要运行的代码

model = RandomForestRegressor(n_estimators=100)
model.fit(X_train, Y_train)
r2 = model.score(X_test, Y_test)
r2

这是我收到的错误。这似乎是由于我的数据集中存在无穷大或 NaN,但我不知道如何删除它们。

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

如何解决这个错误?

【问题讨论】:

    标签: python scikit-learn random-forest


    【解决方案1】:

    如果您有 Numpy 数组但没有 Pandas 数据帧,请尝试使用下一个函数(如 X_test = remove_nans(X_test))从 NaN 行中过滤 numpy 数组。

    Try it online!

    import numpy as np
    def remove_nans(a):
        return a[np.all(~np.isnan(a.reshape(a.shape[0], -1)), axis = -1)]
    print(remove_nans(np.array([[1, np.nan], [2, 3]]))) # Example
    

    输出:

    [[2., 3.]]
    

    如果您有数据框,请执行df.values = remove_nans(df.values)

    【讨论】:

      【解决方案2】:

      在拆分为 X_train、y_train、X_test、y_test 之前,请对您的数据框执行此操作。

      df.dropna(inplace = True)
      

      【讨论】:

      • 我试过这个,它仍然给我同样的错误,我也尝试将我的值从 float64 转换为 float32,它仍然给我同样的错误。还有什么我可以做的吗?
      • 尝试添加有关您的数据集的更多信息。
      猜你喜欢
      • 2023-03-14
      • 2017-08-13
      • 2019-12-06
      • 2019-04-20
      • 2020-02-02
      • 2019-12-25
      • 2021-03-23
      • 2014-08-11
      • 2018-06-24
      相关资源
      最近更新 更多