随机森林的pred_proba输出四舍五入的值

我在使用scikit learn的随机森林进行分类,并使用pred_proba函数获取类别概率。但它输出的概率被四舍五入到小数点后第一位

我尝试使用了样本鸢尾花数据集

iris = load_iris()df = pd.DataFrame(iris.data, columns=iris.feature_names)df['is_train'] = np.random.uniform(0, 1, len(df)) <= .75df['species'] = pd.Categorical(iris.target, iris.target_names)df.head()train, test = df[df['is_train']==True], df[df['is_train']==False]features = df.columns[:4]clf = RandomForestClassifier(n_jobs=2)y, _ = pd.factorize(train['species'])clf.fit(train[features], y)clf.predict_proba(train[features])

输出概率

   [ 1. ,  0. ,  0. ],   [ 1. ,  0. ,  0. ],   [ 1. ,  0. ,  0. ],   [ 1. ,  0. ,  0. ],   [ 0. ,  1. ,  0. ],   [ 0. ,  1. ,  0. ],   [ 0. ,  1. ,  0. ],   [ 0. ,  1. ,  0. ],   [ 0. ,  1. ,  0. ],   [ 0. ,  1. ,  0. ],   [ 0. ,  0.8,  0.2],   [ 0. ,  1. ,  0. ],   [ 0. ,  1. ,  0. ],   [ 0. ,  1. ,  0. ],

这是默认输出吗?可以增加小数位数吗?

注意:找到了解决方案。默认树的数量为10,增加到一百后,概率的精度提高了。


回答:

显然,默认设置是十棵树,你在代码中使用了默认值:

Parameters: n_estimators : integer, optional (default=10)森林中的树的数量。

尝试这样做,增加树的数量到25或比10更大的数字:

RandomForestClassifier(n_estimators=25, n_jobs=2)

如果你只是在10棵默认树上获取投票比例,这很可能会导致你看到的概率

你可能会遇到问题,因为鸢尾花数据集非常小。如果我没记错的话,不到200个观测值。

predict.proba()的文档说明:

输入样本的预测类别概率被计算为森林中所有树的预测类别概率的平均值。单棵树的类别概率是叶子节点中相同类别的样本比例。

我在文档中没有找到可以调整预测概率小数精度的参数。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注