sklearn 的 ValueError,问题可能是由 float32/float64 dtypes 引起的?
ValueError for sklearn, problem maybe caused by float32/float64 dtypes?
所以我想检查数据集中的特征重要性,但出现此错误:
ValueError: Input contains NaN, infinity or a value too large for dtype('float32').
我检查了数据集,很公平,有 nan 值。所以我添加了一行来删除所有 nan 行。现在没有 nan 值。我重新 运行 代码,仍然是同样的错误。我检查了 .dtypes
并且很公平,它都是 float64。所以我将 .astype(np.float32)
添加到我传递给 sklearn 的列中。但是现在我仍然有同样的错误。我手动滚动了整个数据框,还使用了 data.describe()
,所有值都在 0 到 5 之间,远离无穷大或大值。
这里出现错误的原因是什么?
这是我的代码:
import pandas as pd
import numpy as np
from sklearn.ensemble import ExtraTreesClassifier
import matplotlib.pyplot as plt
data = pd.read_csv("data.csv")
data.dropna(inplace=True) #dropping all nan values
X = data.iloc[:,8:42]
X = X.astype(np.float32) #converting data from float64 to float32
y = data.iloc[:,4]
y = y.astype(np.float32) #converting data from float64 to float32
# feature importance
model = ExtraTreesClassifier()
model.fit(X,y)
print(model.feature_importances_)
你是第三种情况(大值)然后是第二种情况(无穷大)downcast后:
演示:
import numpy as np
a = np.array(np.finfo(numpy.float64).max)
# array(1.79769313e+308)
b = a.astype('float32')
# array(inf, dtype=float32)
如何调试?假设以下数组:
a = np.array([np.finfo(numpy.float32).max, np.finfo(numpy.float64).max])
# array([3.40282347e+038, 1.79769313e+308])
a[a > np.finfo(numpy.float32).max]
# array([1.79769313e+308])
所以我想检查数据集中的特征重要性,但出现此错误:
ValueError: Input contains NaN, infinity or a value too large for dtype('float32').
我检查了数据集,很公平,有 nan 值。所以我添加了一行来删除所有 nan 行。现在没有 nan 值。我重新 运行 代码,仍然是同样的错误。我检查了 .dtypes
并且很公平,它都是 float64。所以我将 .astype(np.float32)
添加到我传递给 sklearn 的列中。但是现在我仍然有同样的错误。我手动滚动了整个数据框,还使用了 data.describe()
,所有值都在 0 到 5 之间,远离无穷大或大值。
这里出现错误的原因是什么?
这是我的代码:
import pandas as pd
import numpy as np
from sklearn.ensemble import ExtraTreesClassifier
import matplotlib.pyplot as plt
data = pd.read_csv("data.csv")
data.dropna(inplace=True) #dropping all nan values
X = data.iloc[:,8:42]
X = X.astype(np.float32) #converting data from float64 to float32
y = data.iloc[:,4]
y = y.astype(np.float32) #converting data from float64 to float32
# feature importance
model = ExtraTreesClassifier()
model.fit(X,y)
print(model.feature_importances_)
你是第三种情况(大值)然后是第二种情况(无穷大)downcast后:
演示:
import numpy as np
a = np.array(np.finfo(numpy.float64).max)
# array(1.79769313e+308)
b = a.astype('float32')
# array(inf, dtype=float32)
如何调试?假设以下数组:
a = np.array([np.finfo(numpy.float32).max, np.finfo(numpy.float64).max])
# array([3.40282347e+038, 1.79769313e+308])
a[a > np.finfo(numpy.float32).max]
# array([1.79769313e+308])