我正在尝试在熊猫数据框上运行随机森林。我知道数据框中没有null或无穷大,但是当我拟合模型时会不断收到ValueError。大概是因为我有flaot64列,而不是float32;我也有很多类型为bool和int的列。有没有办法将所有float列更改为float32?

我尝试过重写CSV,并且可以肯定地说问题不在于此。之前,我从未在float64s上运行随机森林的问题,所以我不确定这次出了什么问题。

labels = electric['electric_ratio']
electric = electric[[x for x in electric.columns if x != 'electric_ratio']]
electric_list = electric.columns
first_train, first_test, train_labels, test_labels = train_test_split(electric, labels)
rf = RandomForestRegressor(n_estimators = 1000, random_state=88)
rf_1 = rf.fit(first_train, train_labels)


我希望这能适合模型,但始终如一

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

最佳答案

要将所有float64列的dtype更改为float32列,请尝试以下操作:

for column in df.columns:
    if df[column].dtype == 'float64':
        df[column] = df[column].astype(np.float32)

08-25 05:10