我有一个包含我的标签的pandas系列s
和一个包含我的数据的pandas DataFrame df
。
我想使用sklearn RandomForestRegressor生成标签的预测。
model = RandomForestRegressor(n_estimators=1000, max_depth= 30 , random_state=31415)
model.fit(df, s)
但是,当我这样做时,.fit()
会引发以下异常:
ValueError: Input contains NaN, infinity or a value too large for dtype('float32').
而且我真的不明白为什么会有这个错误。我的标签以及我的DataFrame的所有列都是数字:
print(s.describe(), header=True)
count 1168.000000
mean 181193.444349
std 81756.636708
min 34900.000000
25% 129000.000000
50% 160000.000000
75% 214600.000000
max 755000.000000
Name: Label, dtype: float64
print(df.describe())
Field1 Field2 Field3 Field4 Field5 Field6 Field7 Field8
count 1168.000000 1168.000000 1168.000000 1168.000000 1168.000000 1168.000000 1168.000000 1168.000000
mean 6.080479 1519.982877 1.749144 1057.800514 0.973459 1.556507 1970.724315 1984.442637
std 1.392363 540.953069 0.760811 444.809832 0.160807 0.554077 29.939059 20.626356
min 1.000000 334.000000 0.000000 0.000000 0.000000 0.000000 1872.000000 1950.000000
25% 5.000000 1123.750000 1.000000 795.750000 1.000000 1.000000 1953.750000 1966.000000
50% 6.000000 1465.000000 2.000000 990.000000 1.000000 2.000000 1972.000000 1993.000000
75% 7.000000 1786.000000 2.000000 1291.500000 1.000000 2.000000 2000.000000 2003.000000
max 10.000000 5642.000000 4.000000 6110.000000 1.000000 3.000000 2010.000000 2010.000000
我在s
和df
中也没有空值:
print(np.isnan(s).unique())
[False]
print(df.isnull().sum().sort_values(ascending=False))
Field8 0
Field7 0
Field5 0
Field5 0
Field4 0
Field3 0
Field2 0
Field1 0
dtype: int64
我什至手动检查了我的数据,但没有看到任何奇怪的值。
是什么导致此错误?
编辑:
在尝试了多种方法之后,我找到了解决方案(即使我不太了解为什么这可以解决我的问题)。
就我而言,添加
df.reset_index(drop=True)
在.fit()
调用解决问题之前(如提出的here)。
如果有人了解这里发生了什么,我很感兴趣。
参考方案
这可能是由于数据的巨大差异(例如,字段1的范围是:〜1到〜10,字段2的范围是:〜300到〜5000)
尝试应用特征缩放,然后拟合模型。
定标器= MinMaxScaler()
df = scaler.fit_transform(df)
Python sqlite3数据库已锁定 - python我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…
python-docx应该在空单元格已满时返回空单元格 - python我试图遍历文档中的所有表并从中提取文本。作为中间步骤,我只是尝试将文本打印到控制台。我在类似的帖子中已经看过scanny提供的其他代码,但是由于某种原因,它并没有提供我正在解析的文档的预期输出可以在https://www.ontario.ca/laws/regulation/140300中找到该文档from docx import Document from…
Python:集群作业管理 - python我在具有两个阶段的计算群集(Slurm)上运行python脚本,它们是顺序的。我编写了两个python脚本,一个用于阶段1,另一个用于阶段2。每天早上,我检查所有第1阶段的工作是否都以视觉方式完成。只有这样,我才开始第二阶段。通过在单个python脚本中组合所有阶段和作业管理,是否有一种更优雅/自动化的方法?我如何知道工作是否完成?工作流程类似于以下内容:w…
具有Java异常的Python等效原因 - pythonPython中是否有一种引发错误的原因,该错误以另一个错误为原因?在Java中,您可以创建一个原因异常的实例,例如以下代码try { throw new IOException(); } catch (IOException e) { throw new RuntimeException("An exception occurred while t…
Python:传递记录器是个好主意吗? - python我的Web服务器的API日志如下:started started succeeded failed 那是同时收到的两个请求。很难说哪一个成功或失败。为了彼此分离请求,我为每个请求创建了一个随机数,并将其用作记录器的名称logger = logging.getLogger(random_number) 日志变成[111] started [222] start…