Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对来自多个列的分类变量进行编码_Python_Pandas_Encoding_Scikit Learn_Categorical Data - Fatal编程技术网

Python 对来自多个列的分类变量进行编码

Python 对来自多个列的分类变量进行编码,python,pandas,encoding,scikit-learn,categorical-data,Python,Pandas,Encoding,Scikit Learn,Categorical Data,在一个大约100万行的数据集中,大部分是布尔特征,我有15列字符串数据,我想以识别它们之间交互的方式进行编码。所以数据是这样的: Name1 Name2 Name3 ... Jane John Julie ... John Julie Peter ... 相同的名称可以出现在任何列中,但名称始终按字母顺序排列。 现在,我将数据重塑为“长”格式。这使得机器学习算法能够认识到,例如,詹姆斯总是詹姆斯,不管他开始在哪个专栏,但失去了交互效果 df = (pd.wide_to_long(df,

在一个大约100万行的数据集中,大部分是布尔特征,我有15列字符串数据,我想以识别它们之间交互的方式进行编码。所以数据是这样的:

Name1 Name2 Name3 ...
Jane  John  Julie ...
John  Julie Peter ...
相同的名称可以出现在任何列中,但名称始终按字母顺序排列。 现在,我将数据重塑为“长”格式。这使得机器学习算法能够认识到,例如,詹姆斯总是詹姆斯,不管他开始在哪个专栏,但失去了交互效果

df = (pd.wide_to_long(df, 
                      stubnames = stubs,
                      i = i,
                      j = j)
        .reset_index()) 
虚拟编码也有类似的问题(因为我有数千个名字,所以有点笨拙)

将其保留为宽格式并单独编码每一列会忽略同一个人在不同的列中(因为它存储在单独的分类变量中)。因此,在这种情况下,互动效果是无声的/扭曲的(因为如果安娜或扎卡里也与詹姆斯一起,詹姆斯与朱莉的互动是不同的)。我真正想做的是将这些列中的各种名称组合编码为一个单一的分类特征


值得一提的是,我还在管道中为其他变量使用category_编码器包,并主要为tree(Random Forest)和ensemble(xgboost)方法准备数据。

将三列合并为一列,并将其分类?谢谢。共有15列,但我想我可以试一试,因为它们总是按字母顺序排列的。例如,这就忽略了詹姆斯如何与不同群体的人互动(因为他只会成为长串中的一个子串)。也许我可以将每次遗漏一个名称的行组合起来,然后将其更改为长格式,并在单独的列中包含排除的名称。这会变得混乱,但可能会奏效。我很感激你的建议。把这三个栏目合并成一个栏目,并把它分类?谢谢。共有15列,但我想我可以试一试,因为它们总是按字母顺序排列的。例如,这就忽略了詹姆斯如何与不同群体的人互动(因为他只会成为长串中的一个子串)。也许我可以将每次遗漏一个名称的行组合起来,然后将其更改为长格式,并在单独的列中包含排除的名称。这会变得混乱,但可能会奏效。我感谢你的建议。