Python 分组监督学习随机森林
因此,我有这样一个训练数据集(但要大得多): 其中,每个组(共享组号的行)包含一个人员列表(每个组中的每个唯一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()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,而不是在所有行和组中分配它。为我指明
由于您的功能是
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