Python 分组监督学习随机森林

Python 分组监督学习随机森林,python,pandas,machine-learning,scikit-learn,Python,Pandas,Machine Learning,Scikit Learn,因此,我有这样一个训练数据集(但要大得多): 其中,每个组(共享组号的行)包含一个人员列表(每个组中的每个唯一PID),组中的一个人Best=1,其余的人Best=2。我的目标是使用这些训练数据,根据Var1和Var2预测每组中哪个人是最好的(best=1) 我使用了Scikit learn,并尝试使用随机森林模型预测测试数据的最佳结果,但它不考虑组,并且可以为每组多个PID指定Best=1 我想知道如何训练/运行模型,以便它学会为每个组分配一个Best=1,而不是在所有行和组中分配它。为我指明

因此,我有这样一个训练数据集(但要大得多):

其中,每个组(共享组号的行)包含一个人员列表(每个组中的每个唯一PID),组中的一个人Best=1,其余的人Best=2。我的目标是使用这些训练数据,根据Var1和Var2预测每组中哪个人是最好的(best=1)

我使用了Scikit learn,并尝试使用随机森林模型预测测试数据的最佳结果,但它不考虑组,并且可以为每组多个PID指定Best=1

我想知道如何训练/运行模型,以便它学会为每个组分配一个Best=1,而不是在所有行和组中分配它。为我指明有用资源的方向,就像我不确定在这方面应该向何处寻求帮助一样好。

当一个功能不是一个有序的指标时(例如离散分类),我们使用一个热编码。这意味着,对于原始要素的N类(不同的值),我们创建了一系列N要素,其中只有一个是“好”(通常1),而其他要素是“坏”(通常0)。您可以将其理解为一组布尔函数:isGroup111(),isGroup112()

当一个特征不是一个有序的度量(比如离散分类)时,我们使用一个热编码。这意味着,对于原始要素的N类(不同的值),我们创建了一系列N要素,其中只有一个是“好”(通常1),而其他要素是“坏”(通常0)。您可以将其理解为一组布尔函数:isGroup111(),isGroup112()



由于您的功能是
Var1
Var2
,因此它将尝试从这两列中预测
Best
。它将独立地预测每个样本,因此可以在同一组中生成多个样本。好的,我将尝试将组和PID添加到特性中,看看这是否会生成所需的结果。谢谢恐怕不会好起来了。您应该使用
onehotcoder
对功能
Group
进行编码,否则它将在组之间对组进行排序,这意味着什么。为什么小组
111
的重要性不如小组
112
(仅仅因为
111<112
)你能详细说明一下吗?我不熟悉OneHotEncoder。“对功能组进行编码”是什么意思?因为您的功能是
Var1
Var2
,所以它将尝试从这两列中预测
Best
。它将独立地预测每个样本,因此可以在同一组中生成多个样本。好的,我将尝试将组和PID添加到特性中,看看这是否会生成所需的结果。谢谢恐怕不会好起来了。您应该使用
onehotcoder
对功能
Group
进行编码,否则它将在组之间对组进行排序,这意味着什么。为什么小组
111
的重要性不如小组
112
(仅仅因为
111<112
)你能详细说明一下吗?我不熟悉OneHotEncoder。“对功能组进行编码”是什么意思?放弃
PID
。我不认为ID会给分类器带来任何重要的信息……为了完整性,我把它留在了表中。你说得很对,它不应该是评估中的一个功能。这是有道理的,谢谢!如果存在大量不同的组,是否存在内存问题?这取决于您的存储方法。在最坏的情况下,这将用三个短整数(三个类)替换一个短整数。如果数据库对数据类型有响应,则可以用3位映射替换它:每个组一个布尔值。直接的答案是尝试并跟踪您的内存使用情况。@Nizag:是的,如果您有很多类别,如果没有足够的内存,使用
OneHotEncoder
将导致内存问题。我不认为ID会给分类器带来任何重要的信息……为了完整性,我把它留在了表中。你说得很对,它不应该是评估中的一个功能。这是有道理的,谢谢!如果存在大量不同的组,是否存在内存问题?这取决于您的存储方法。在最坏的情况下,这将用三个短整数(三个类)替换一个短整数。如果数据库对数据类型有响应,则可以用3位映射替换它:每个组一个布尔值。直接的答案是尝试并跟踪您的内存使用情况。@Nizag:是的,如果您有很多类别,如果您没有足够的内存,使用
OneHotEncoder将导致内存问题
       Group   PID  Var1  Var2  Best
    0    111     1     1     1     1
    1    111     2     2     1     2
    2    111     3     1     2     2
    3    112     1     1     2     2
    4    112     2     2     1     1
    5    113     1     1     2     2
    6    113     2     1     1     2
    7    113     3     2     1     1
    8    113     4     3     2     2
   Group111 Group112 Group113   PID  Var1  Var2  Best
0     1        0        0        1     1     1     1
1     1        0        0        2     2     1     2
2     1        0        0        3     1     2     2
3     0        1        0        1     1     2     2
4     0        1        0        2     2     1     1
5     0        0        1        1     1     2     2
6     0        0        1        2     1     1     2
7     0        0        1        3     2     1     1
8     0        0        1        4     3     2     2