Python 如何使用numpy对数据进行热编码?
假设我有一个数据集Python 如何使用numpy对数据进行热编码?,python,arrays,csv,numpy,one-hot-encoding,Python,Arrays,Csv,Numpy,One Hot Encoding,假设我有一个数据集 sex age hours female 23 900 male 19 304 female 42 222 ... 如果我使用np.loadtxt或np.genfromtxt,我可以使用转换器为sex列中的每个分类数据赋值。有没有办法在加载过程中创建一个热列?如果没有,我应该在哪里完成这项工作?看看熊猫。获取假人功能 使用pandas,您可以传递类别数据类型(在列中以便宜的方式加载): 一旦你有了一个类别,你就可以使用get\u dummies
sex age hours
female 23 900
male 19 304
female 42 222
...
如果我使用np.loadtxt或np.genfromtxt,我可以使用转换器为sex列中的每个分类数据赋值。有没有办法在加载过程中创建一个热列?如果没有,我应该在哪里完成这项工作?看看熊猫。获取假人功能
使用pandas,您可以传递类别数据类型(在列中以便宜的方式加载):
一旦你有了一个类别,你就可以使用
get\u dummies
:
In [21]: pd.get_dummies(df.sex)
Out[21]:
female male
0 1 0
1 0 1
2 1 0
In [22]: pd.get_dummies(df.sex.cat.codes)
Out[22]:
0 1
0 1 0
1 0 1
2 1 0
下面是一种
genfromtxt
方法:
import numpy as np
def hot(s):
rec = np.genfromtxt(s, dtype="i8,i4,i4", skip_header=1,
converters={0:{b'male':1<<32, b'female':1}.__getitem__})
return rec.view(np.int32).reshape((-1, 4))
print(hot(<your_file_name>))
将numpy导入为np
def热:
rec=np.genfromtxt(s,dtype=“i8,i4,i4”,跳过页眉=1,
converters={0:{b'male':1我要求使用一个热编码的主要原因是为了能够将其放入keras。keras是否接受这一点并将其转换为一个热向量?@user184074从简单的代码中可以看出这一点,但您始终可以提取代码df.sex.cat.codes
。使用pd.get\u dummies()
相反,没有一种方法可以读懂get\u dummies,要想有效地读懂它,你需要先读懂。也就是说,然后读懂pd.get\u dummies(df.sex.cat.code)
。不,你不需要第二步。这根本不是必需的
import numpy as np
def hot(s):
rec = np.genfromtxt(s, dtype="i8,i4,i4", skip_header=1,
converters={0:{b'male':1<<32, b'female':1}.__getitem__})
return rec.view(np.int32).reshape((-1, 4))
print(hot(<your_file_name>))