在Python中进行因子化

我记得在使用R语言时,我使用了.factor(我认为它们是带有层次的因子),但在Python中我不知道如何操作。

我曾经使用过get_dummies,但当训练数据集中有测试集中没有的值时,会出现问题,从而生成的列数超过了机器学习算法所能接受的数量。

我需要转换以下列:

train.head(5)    Id  MSSubClass  MSZoning     1      60         RL     2      53         RR     3      49         RL     4      60         RL     5      95         RR     6      16         RR     6      16         R1

我需要将train.MSZoning转换成如下形式:

MSZoning    1    2    1    1    2    2    3      

谢谢。


回答:

你可以使用pd.Categorical。以下是一个最小可复现的示例

import pandas as pd data = [[1, 60, 'RL'], [2, 53, 'RR'], [3, 49, 'RL'], [4, 60, 'RL'], [5, 95, 'RR']] df = pd.DataFrame(data, columns = ['Id', 'MSSubClass', 'MSZoning']) df['MSZoning_factor'] = pd.Categorical(df.MSZoning).codes + 1df#   Id  MSSubClass MSZoning  MSZoning_factor#0   1          60       RL                1#1   2          53       RR                2#2   3          49       RL                1#3   4          60       RL                1#4   5          95       RR                2

或者使用pd.factorize

df['MSZoning_factor'] = pd.factorize(df.MSZoning)[0] + 1

结果相同。

Related Posts

如何在预测中使用重缩放

我在R中训练了一个Keras模型,处理了存储在文件夹中…

生成精确召回曲线的置信区间

已关闭。此问题需要更加集中。目前不接受回答。 想要改进…

有人能解释一下为什么我们在将数据分割成训练集和测试集时要使用random_state吗? [duplicate]

这个问题已有答案: 在sklearn.model_se…

在Azure ML Studio上部署自定义模型

在Azure ML Studio中,我们可以选择许多内…

如何在多类情感分析问题中使用SVM预测所有类别?

我正在制作一个情感分析分类器,并且有三个类别/标签,即…

使用Caffe训练时,文件列表是否需要排序?

在使用Caffe进行训练且不使用lmdb文件时,需要为…

发表回复

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