Python-scikit错误了解随机林值格式
当我执行命令时:Python-scikit错误了解随机林值格式,python,arrays,floating-point,random-forest,Python,Arrays,Floating Point,Random Forest,当我执行命令时: clf.fit(train_data, train_label) 我得到以下错误 ValueError:输入包含NaN、无穷大或对数据类型('float32')太大的值 问题在于大小为(18000,20)的数组train_data。我已尝试使用此命令: clf.fit(np.float32(train_data), train_label) 或 在以下链接的train文件(python)中查找数据集train_数据和train_标签: 但是,我无法确保数组“train_d
clf.fit(train_data, train_label)
我得到以下错误
ValueError:输入包含NaN、无穷大或对数据类型('float32')太大的值
问题在于大小为(18000,20)的数组train_data
。我已尝试使用此命令:
clf.fit(np.float32(train_data), train_label)
或
在以下链接的train文件(python)中查找数据集train_数据和train_标签:
但是,我无法确保数组“train_data”中的所有值对
clf.fit
函数有效。有什么帮助吗?刚刚找到了克服此错误的解决方案。您需要缩放数据:
代码:
这应该是因为在矩阵的某个条目中有一个错误的值(NaN或无穷大)。。。也就是说,您的矩阵是单数的,或者您从一开始就在
train\u data
上出错。如果您使用其他不存在的列_数据,则应该可以。您的train\u数据的外观如何?您可以上传train\u数据和train\u标签吗?也许你在列车数据中有任何字符串或NaN?请,@sera在添加的链接中查找数据集。Thanks@Ruser抱歉,我如何打开此文件?@sera use:with open('train','rb')作为f:train\u数据,train\u label=pickle.load(f)谢谢@sera,它成功了。然而,由于我正在分割数据集进行交叉验证,一个特定的数据集不起作用。你能检查一下吗?再次感谢。(链接已选中)@Ruser是的,我会检查它!你用什么简历?漏掉一个?K折叠?在文件中找到整个@sera脚本,在“数据”中找到新的数据集@Ruser如何打开脚本?请检查(我没有添加.py扩展名)
train_data = np.array([s[0].astype('float32') for s in train_data])
from sklearn.ensemble import RandomForestClassifier
import pickle
import numpy as np
from sklearn.preprocessing import scale
with open('train', 'rb') as f:
train_data, train_label = pickle.load(f)
#some diagnostic to see if there are NaNs. No NaN were found !
print(np.isnan(train_data))
print(np.where(np.isnan(train_data)))
print(np.nan_to_num(train_data))
print(np.isnan(train_label))
print(np.where(np.isnan(train_label)))
#so need to scale
train_data = scale(train_data)
clf = RandomForestClassifier()
clf.fit(train_data, train_label)