Python的 - 与scikit错误学习随机森林约值格式
当我执行命令:Python的 - 与scikit错误学习随机森林约值格式
clf.fit(train_data, train_label)
我获得以下错误
ValueError: Input contains NaN, infinity or a value too large for dtype('float32').
的问题是阵列train_data
大小为( 18000,20)。我试图用这个命令:
clf.fit(np.float32(train_data), train_label)
或
train_data = np.array([s[0].astype('float32') for s in train_data])
查找下面的链接火车文件(Python)的数据集train_data和train_label:
https://www.dropbox.com/s/b3017gi18x6x325/train?dl=0
但是,我无法得到数组“train_data”中的所有值对clf.fit
函数有效。任何帮助?
只是找到了一个解决方案来克服这个错误。您需要缩放数据:
代码:
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)
谢谢@sera,它的工作。但是,由于我正在分割交叉验证的数据集,因此一个特定的数据集不起作用。你能检查它吗?再次感谢。 https://www.dropbox.com/s/r1hl5zs0chkthc6/train?dl=0(链接选中) –
@Ruser是我会检查它!你使用什么简历?离开一个吗? K褶? – sera
在File中找到整个@sera脚本,在“data”中找到新的数据集。 https://www.dropbox.com/sh/0mp5ovtxtkjhfsj/AABtphHxHKIDCpsE48Q0-Hufa?dl=0 –
这应该是因为你有一个错误的值在矩阵中的一个条目(NaN或无穷)......也就是说,你的矩阵是单数,或者你从一开始就在'train_data'上有错误。如果你使用其他的train_data,它不会提示它应该没问题。你的'train_data'看起来怎么样? – DarkCygnus
你能上传train_data和train_label吗?也许你在train_data中有任何字符串或NaN? – sera
请@sera找到添加链接中的数据集。谢谢 –