gpt4 book ai didi

python - 具有分类数据的随机森林仅预测某一类别内的数据

转载 作者:行者123 更新时间:2023-12-01 00:16:21 25 4
gpt4 key购买 nike

我正在使用 scikit learn 的 RandomForrestRegressor,但我无法使其工作,或者至少看起来是这样。我正在使用的数据具有我使用 LabelBinarizer 编码的分类数据,因此我的数据如下所示:

Id     Cat1 Cat2 Cat3 .... Cat50 
123 0 1 0 0
...

每一行只能有给定类别之一。现在,我使用每个项目的给定评分来训练我的模型,该评分是使用 scikit-learns RandomForrestRegressor 进行数值化的。
我的 y 是一个评级。
我的 X 是包含类别的项目的特征。
所以我的 y 和 X 看起来像这样:

y = [0,1,1,4,,3,7,8,1,9]

X = [[0, 1, 0, ..., 0],
[0, 0, 1, 0...,0]
...]

我想根据 X 中的项目数据数组预测新项目的评分 y。为此,我使用 RandomForrestRegressor,如下所示:

regressor = RandomForestRegressor(n_estimators=60000, random_state=0, max_depth=100)
regressor.fit(X_train, y_train)
theta[user_id] = regressor.feature_importances_

我选择了 max-depth=106,因为有 100 个项目特征,n_estimator=60000,因为我有大约 30000 个项目。但我不太确定 n_estimator 是否选择明智,即使我选择非常低的 n_estimator,结果也保持不变。
我将每个项目特征与用户存储特征重要性的 theta 条目相乘。
最适合用户的项目的结果如下所示:

Id Name    Category  
12 example Cat1
34 example Cat1
56 example Cat1
..

因此,每个预测都有相同的类别,尽管有 50 个不同的类别,并且训练数据确实包含比 cat1 样本多得多的样本。事实上,Cat1只是样本的一小部分。

我的问题是如何确定我的错误在哪里?我是否应该认为这是一个错误,因为这个结果在我的情况下是不合理的。我下一步应该采取哪一步来确定错误所在?

最佳答案

您的输入功能是什么?

您应该检查它是否是不平衡的数据集:df['Cat1'].sum df['Cat2'].sum可能会是:

Cat1   Cat2 ... Cat50
10000 4 3

这意味着您的数据不平衡。然后,您确实需要检查可以使用哪些技术,一些名称是:欠采样和过采样,或隔离森林。

您确定要使用回归吗?而且不分类?检查这个包:https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html

这应该让您知道您想要解决什么问题:https://en.wikipedia.org/wiki/Supervised_learning

关于python - 具有分类数据的随机森林仅预测某一类别内的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59304964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com