RandomForestRegressor导致KeyError:' Squared_error'

发布于 2025-01-25 00:23:52 字数 2474 浏览 2 评论 0原文

我试图预测带有随机森林的卡利住房数据集中的房价。我不明白为什么我会得到keyError:'squared_error'在此简单代码中:

from sklearn.datasets import fetch_california_housing
import sklearn.ensemble

housing = fetch_california_housing()
rfr = sklearn.ensemble.RandomForestRegressor(n_estimators=100,
                       max_depth=int(25),
                       max_features="auto",
                       n_jobs=-1,
                       oob_score = True,
                       min_samples_leaf=20,
                       criterion = 'squared_error')

rfr.fit(housing.data, housing.target)

错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/kratz/anaconda3/lib/python3.8/site-packages/sklearn/ensemble/_forest.py", line 387, in fit
    trees = Parallel(n_jobs=self.n_jobs, verbose=self.verbose,
  File "/home/kratz/anaconda3/lib/python3.8/site-packages/joblib/parallel.py", line 1054, in __call__
    self.retrieve()
  File "/home/kratz/anaconda3/lib/python3.8/site-packages/joblib/parallel.py", line 933, in retrieve
    self._output.extend(job.get(timeout=self.timeout))
  File "/home/kratz/anaconda3/lib/python3.8/multiprocessing/pool.py", line 771, in get
    raise self._value
  File "/home/kratz/anaconda3/lib/python3.8/multiprocessing/pool.py", line 125, in worker
    result = (True, func(*args, **kwds))
  File "/home/kratz/anaconda3/lib/python3.8/site-packages/joblib/_parallel_backends.py", line 595, in __call__
    return self.func(*args, **kwargs)
  File "/home/kratz/anaconda3/lib/python3.8/site-packages/joblib/parallel.py", line 262, in __call__
    return [func(*args, **kwargs)
  File "/home/kratz/anaconda3/lib/python3.8/site-packages/joblib/parallel.py", line 262, in <listcomp>
    return [func(*args, **kwargs)
  File "/home/kratz/anaconda3/lib/python3.8/site-packages/sklearn/utils/fixes.py", line 222, in __call__
    return self.function(*args, **kwargs)
  File "/home/kratz/anaconda3/lib/python3.8/site-packages/sklearn/ensemble/_forest.py", line 169, in _parallel_build_trees
    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)
  File "/home/kratz/anaconda3/lib/python3.8/site-packages/sklearn/tree/_classes.py", line 1247, in fit
    super().fit(
  File "/home/kratz/anaconda3/lib/python3.8/site-packages/sklearn/tree/_classes.py", line 350, in fit
    criterion = CRITERIA_REG[self.criterion](self.n_outputs_,
KeyError: 'squared_error'

I am trying to predict house prices in the Cali housing data set with a random forest. I do not understand why I get a KeyError: 'squared_error' in this simple code:

from sklearn.datasets import fetch_california_housing
import sklearn.ensemble

housing = fetch_california_housing()
rfr = sklearn.ensemble.RandomForestRegressor(n_estimators=100,
                       max_depth=int(25),
                       max_features="auto",
                       n_jobs=-1,
                       oob_score = True,
                       min_samples_leaf=20,
                       criterion = 'squared_error')

rfr.fit(housing.data, housing.target)

Error:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/kratz/anaconda3/lib/python3.8/site-packages/sklearn/ensemble/_forest.py", line 387, in fit
    trees = Parallel(n_jobs=self.n_jobs, verbose=self.verbose,
  File "/home/kratz/anaconda3/lib/python3.8/site-packages/joblib/parallel.py", line 1054, in __call__
    self.retrieve()
  File "/home/kratz/anaconda3/lib/python3.8/site-packages/joblib/parallel.py", line 933, in retrieve
    self._output.extend(job.get(timeout=self.timeout))
  File "/home/kratz/anaconda3/lib/python3.8/multiprocessing/pool.py", line 771, in get
    raise self._value
  File "/home/kratz/anaconda3/lib/python3.8/multiprocessing/pool.py", line 125, in worker
    result = (True, func(*args, **kwds))
  File "/home/kratz/anaconda3/lib/python3.8/site-packages/joblib/_parallel_backends.py", line 595, in __call__
    return self.func(*args, **kwargs)
  File "/home/kratz/anaconda3/lib/python3.8/site-packages/joblib/parallel.py", line 262, in __call__
    return [func(*args, **kwargs)
  File "/home/kratz/anaconda3/lib/python3.8/site-packages/joblib/parallel.py", line 262, in <listcomp>
    return [func(*args, **kwargs)
  File "/home/kratz/anaconda3/lib/python3.8/site-packages/sklearn/utils/fixes.py", line 222, in __call__
    return self.function(*args, **kwargs)
  File "/home/kratz/anaconda3/lib/python3.8/site-packages/sklearn/ensemble/_forest.py", line 169, in _parallel_build_trees
    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)
  File "/home/kratz/anaconda3/lib/python3.8/site-packages/sklearn/tree/_classes.py", line 1247, in fit
    super().fit(
  File "/home/kratz/anaconda3/lib/python3.8/site-packages/sklearn/tree/_classes.py", line 350, in fit
    criterion = CRITERIA_REG[self.criterion](self.n_outputs_,
KeyError: 'squared_error'

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清风不识月 2025-02-01 00:23:52

这可能是由于环境中scikit-learn的版本所致。根据 ='Squared_error'在V1.0中引入,因此,如果您有事先版本,则使用criterion ='MSE'而不是。

您可以使用pip Freeze在Env中检查库的版本;对于Scikit-Learn,您也可以使用:

import sklearn
sklearn.__version__

It's probably due to the version of scikit-learn in your environment. According to the docs for RandomForestRegressor criterion = 'squared_error' was introduced in v1.0, so if you have a prior version use criterion='mse' instead.

You can use pip freeze to check for the version of your libraries in your env; for scikit-learn you can also use:

import sklearn
sklearn.__version__
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文