Python Can';我不知道如何清除随机森林中的南部
获取ValueError:运行以下代码时,输入包含NaNPython Can';我不知道如何清除随机森林中的南部,python,numpy,scikit-learn,nan,Python,Numpy,Scikit Learn,Nan,获取ValueError:运行以下代码时,输入包含NaN from sklearn.ensemble import RandomForestRegressor rf = RandomForestRegressor(n_estimators = 1000, random_state = 42) rf.fit(train_features, train_labels); 我运行了下面的程序,得到的结果表明没有NaN或无穷大的值,但在train_features数组下有一个不同的循环显示它们 np.
from sklearn.ensemble import RandomForestRegressor
rf = RandomForestRegressor(n_estimators = 1000, random_state = 42)
rf.fit(train_features, train_labels);
我运行了下面的程序,得到的结果表明没有NaN或无穷大的值,但在train_features数组下有一个不同的循环显示它们
np.any(np.isnan(train_features))
我已经在下面运行了,但它没有改变我收到的错误
train_features = np.nan_to_num(train_features)
train_labels = np.nan_to_num(train_labels)
请帮忙
编辑:添加完整的相关代码:
features = pd.read_csv(x)
labels = np.array(features['Actuals'])
features = features.drop('Actuals', axis = 1)
feature_list = list(features.columns)
features = np.array(features)
from sklearn.model_selection import train_test_split
train_features, test_features, train_labels, test_labels = train_test_split(features, labels, test_size = 0.25, random_state = 42)
from sklearn.ensemble import RandomForestRegressor
rf = RandomForestRegressor(n_estimators = 1000, random_state = 42)
rf.fit(train_features, train_labels);
从我在代码中看到的情况来看,您只检查了
nan
,而不是inf
。也许有更好的方法使用numpy
,但是pandas
方法应该可以:
with pd.option_context('mode.use_inf_as_na', True):
pd.DataFrame(train_features).isnull().sum() #Will show you which columns have nan or inf values
pd.DataFrame(train_labels).isnull().sum()
使用此选项,您可以确定是否存在
nan
或inf
值。然后你可以fillna
从我在你的代码中看到的,你只检查nan
,而不是inf
。也许有更好的方法使用numpy
,但是pandas
方法应该可以:
with pd.option_context('mode.use_inf_as_na', True):
pd.DataFrame(train_features).isnull().sum() #Will show you which columns have nan or inf values
pd.DataFrame(train_labels).isnull().sum()
使用此选项,您可以确定是否存在
nan
或inf
值。然后你可以fillna
我用np.all(np.isfinite(train\u features))
分别测试了inf
。不幸的是,我不能使用pandas函数,因为它们都是为了随机林的目的而制作成数组的。但是你可以使用pd.dataframe()
将数组转换成数据帧,如答案中所述。您的代码中还缺少什么?也许是后路改造?你在把值转换成日志吗?对不起,我没看到。我输入了您提供的代码,但在运行培训时仍然存在nan错误。我已经用我完整的相关代码更新了帖子。如果你在相关代码的第二行添加print(features.isnull().sum().sum())
,你会得到零吗?如果你在我的回答中使用with
语句,它仍然是零吗?我在变为数组之前运行了11,在得到之后运行'numpy.ndarray'对象没有属性'isnull'
我使用np.all(np.isfinite(train\u特性))
分别测试了inf
我只是没有把它放进去,我的坏孩子。不幸的是,我不能使用pandas函数,因为它们都是为了随机林的目的而制作成数组的。但是你可以使用pd.dataframe()
将数组转换成数据帧,如答案中所述。您的代码中还缺少什么?也许是后路改造?你在把值转换成日志吗?对不起,我没看到。我输入了您提供的代码,但在运行培训时仍然存在nan错误。我已经用我完整的相关代码更新了帖子。如果你在相关代码的第二行添加print(features.isnull().sum().sum())
,你会得到零吗?如果您在我的回答中使用with
语句执行此操作,它仍然为零吗?我在更改为数组之前运行了11,在get'numpy.ndarray'对象没有属性'isnull'之后运行。