假设我有一个ndy阵列
a = array([1,0,3])
我想将其编码为2d 1-hot阵列
b = array([[0,1,0,0], [1,0,0,0], [0,0,0,1]])
有快速的方法吗?比仅仅循环a设置元素更快b.
python numpy machine-learning one-hot-encoding numpy-ndarray
我有80%分类变量的机器学习分类问题.如果我想使用某种分类器进行分类,我必须使用一个热编码吗?我可以在没有编码的情况下将数据传递给分类器吗?
我正在尝试执行以下功能选择:
我读了火车文件:
num_rows_to_read = 10000
train_small = pd.read_csv("../../dataset/train.csv",   nrows=num_rows_to_read)
我将分类要素的类型更改为"类别":
non_categorial_features = ['orig_destination_distance',
                          'srch_adults_cnt',
                          'srch_children_cnt',
                          'srch_rm_cnt',
                          'cnt']
for categorical_feature in list(train_small.columns):
    if categorical_feature not in non_categorial_features:
        train_small[categorical_feature] = train_small[categorical_feature].astype('category')
我使用一个热编码:
train_small_with_dummies = pd.get_dummies(train_small, sparse=True)
问题是第3部分经常卡住,虽然我使用的是强机.
因此,在没有热编码的情况下,我无法进行任何特征选择,以确定特征的重要性.
您有什么推荐的吗?
假设我有一个分类特征,颜色,它取值
['red','blue','green','orange'],
我想用它来预测随机森林里的东西.如果我对它进行单热编码(即我将其更改为四个虚拟变量),我如何告诉sklearn这四个虚拟变量实际上是一个变量?具体来说,当sklearn随机选择要在不同节点使用的特征时,它应该包括红色,蓝色,绿色和橙色虚拟对象,或者它不应包括任何一个.
我听说没有办法做到这一点,但我认为必须有一种方法来处理分类变量,而不是随意将它们编码为数字或类似的东西.
我的数据框看起来像这样:
JOINED_CO GENDER EXEC_FULLNAME GVKEY YEAR CONAME BECAMECEO REJOIN LEFTOFC LEFTCO RELEFT REASON PAGE CO_PER_ROL 5622 NaN MALE Ira A. Eichner 1004 1992 AAR CORP 19550101 NaN 19961001 19990531 NaN RESIGNED 79 5622 NaN MALE Ira A. Eichner 1004 1993 AAR CORP 19550101 NaN 19961001 19990531 NaN RESIGNED 79 5622 NaN MALE Ira A. Eichner 1004 1994 AAR CORP 19550101 NaN 19961001 19990531 NaN RESIGNED 79 5622 NaN MALE Ira A. Eichner 1004 1995 AAR CORP 19550101 NaN 19961001 19990531 …
如果输入为零,我想创建一个如下所示的数组:
[1,0,0,0,0,0,0,0,0,0]
如果输入为5:
[0,0,0,0,0,1,0,0,0,0]
对于上面我写道:
np.put(np.zeros(10),5,1)
但它不起作用.
有什么方法可以在一行中实现吗?
如何get_dummies在多个DataFrame列上以惯用方式运行一个函数,它需要单个列并返回多个列?
我正在尝试执行一个简单数据集的热编码.
data = [['a', 'dog', 'red']
        ['b', 'cat', 'green']]
使用Scikit-Learn预处理此数据的最佳方法是什么?
在第一直觉上,你会看到Scikit-Learn的OneHotEncoder.但是一个热门编码器不支持字符串作为功能; 它只会离散整数.
那么你将使用LabelEncoder,它将字符串编码为整数.但是,您必须将标签编码器应用到每个列中,并存储这些标签编码器中的每一个(以及它们所应用的列).这感觉非常笨重.
那么,在Scikit-Learn中最好的方法是什么?
请不要建议pandas.get_dummies.这就是我现在通常使用的一种热编码方式.但是,它无法单独编码您的训练/测试集.
我有np矩阵,我想将其转换为3d数组,其中元素的热编码为第三维.有没有办法处理没有循环每一行,例如
a=[[1,3],
   [2,4]]
应该做成
b=[[1,0,0,0], [0,0,1,0],
   [0,1,0,0], [0,0,0,1]]
我有一个清单:
code = ['<s>', 'are', 'defined', 'in', 'the', '"editable', 'parameters"', '\n', 'section.', '\n', 'A', 'larger', '`tsteps`', 'value', 'means', 'that', 'the', 'LSTM', 'will', 'need', 'more', 'memory', '\n', 'to', 'figure', 'out']
我想转换为一种热编码。我试过:
to_categorical(code)
我收到一个错误: ValueError: invalid literal for int() with base 10: '<s>'
我究竟做错了什么?
这是我的问题,我希望有人能帮我弄清楚..
解释一下,我的数据集中有 10 多个类别列,每个类别都有 200-300 个类别。我想将它们转换为二进制值。为此,我使用第一个标签编码器将字符串类别转换为数字。标签编码器代码和输出如下所示。

在标签编码器之后,我再次使用了来自 scikit-learn 的 One Hot Encoder 并且它有效。但问题是,我需要一个热编码器后的列名。例如,在编码前具有分类值的 A 列。A = [1,2,3,4,..]
编码后应该是这样的
A-1、A-2、A-3
任何人都知道如何在一次热编码后将列名分配给(旧列名 - 值名称或编号)。这是我的一种热编码及其输出;

我需要带名称的列,因为我训练了一个 ANN,但是每次出现数据时,我都无法一次又一次地转换所有过去的数据。所以,我想每次都添加新的。还是谢谢..
one-hot-encoding ×10
python ×10
numpy ×3
pandas ×3
scikit-learn ×3
dataframe ×2
encoding ×2
anaconda ×1
keras ×1