【发布时间】:2014-02-14 17:25:33
【问题描述】:
我正在从 csv 文件导入一些数据。该文件具有标有文本“NA”的 nan 值。 我使用以下方式导入数据:
X = genfromtxt(data, delimiter=',', dtype=float, skip_header=1)
我使用此代码将 nan 替换为先前计算的列均值。
inds = np.where(np.isnan(X))
X[inds]=np.take(col_mean,inds[1])
然后我运行了几次检查并得到空数组:
np.where(np.isnan(X))
np.where(np.isinf(X))
最后我运行了一个 scikit 分类器:
RF = ensemble.RandomForestClassifier(n_estimators=100,n_jobs=-1,verbose=2)
RF.fit(X, y)
并得到以下错误:
File "C:\Users\m&g\Anaconda\lib\site-packages\sklearn\ensemble\forest.py", line 257, in fit
check_ccontiguous=True)
File "C:\Users\m&g\Anaconda\lib\site-packages\sklearn\utils\validation.py", line 233, in check_arrays
_assert_all_finite(array)
File "C:\Users\m&g\Anaconda\lib\site-packages\sklearn\utils\validation.py", line 27, in _assert_all_finite
raise ValueError("Array contains NaN or infinity.")
ValueError: Array contains NaN or infinity.
知道为什么它告诉我有 NaN 或无穷大吗? 我阅读了this post 并尝试运行:
RF.fit(X.astype(float), y.astype(float))
但我得到了同样的错误。
【问题讨论】:
-
np.max(np.abs(X))返回什么? -
np.max(np.abs(X)) = 8.9932064170227995e+41
标签: python scikit-learn nan