标签: one-hot-encoding

将索引数组转换为1-hot编码的numpy数组

假设我有一个ndy阵列

a = array([1,0,3])
Run Code Online (Sandbox Code Playgroud)

我想将其编码为2d 1-hot阵列

b = array([[0,1,0,0], [1,0,0,0], [0,0,0,1]])
Run Code Online (Sandbox Code Playgroud)

有快速的方法吗?比仅仅循环a设置元素更快b.

python numpy machine-learning one-hot-encoding numpy-ndarray

191
推荐指数
9
解决办法
15万
查看次数

我怎样才能在Python中进行热编码?

我有80%分类变量的机器学习分类问题.如果我想使用某种分类器进行分类,我必须使用一个热编码吗?我可以在没有编码的情况下将数据传递给分类器吗?

我正在尝试执行以下功能选择:

  1. 我读了火车文件:

    num_rows_to_read = 10000
    train_small = pd.read_csv("../../dataset/train.csv",   nrows=num_rows_to_read)
    
    Run Code Online (Sandbox Code Playgroud)
  2. 我将分类要素的类型更改为"类别":

    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')
    
    Run Code Online (Sandbox Code Playgroud)
  3. 我使用一个热编码:

    train_small_with_dummies = pd.get_dummies(train_small, sparse=True)
    
    Run Code Online (Sandbox Code Playgroud)

问题是第3部分经常卡住,虽然我使用的是强机.

因此,在没有热编码的情况下,我无法进行任何特征选择,以确定特征的重要性.

您有什么推荐的吗?

python machine-learning pandas anaconda one-hot-encoding

101
推荐指数
7
解决办法
18万
查看次数

sklearn随机森林可以直接处理分类功能?

假设我有一个分类特征,颜色,它取值

['red','blue','green','orange'],

我想用它来预测随机森林里的东西.如果我对它进行单热编码(即我将其更改为四个虚拟变量),我如何告诉sklearn这四个虚拟变量实际上是一个变量?具体来说,当sklearn随机选择要在不同节点使用的特征时,它应该包括红色,蓝色,绿色和橙色虚拟对象,或者它不应包括任何一个.

我听说没有办法做到这一点,但我认为必须有一种方法来处理分类变量,而不是随意将它们编码为数字或类似的东西.

python random-forest scikit-learn one-hot-encoding

46
推荐指数
3
解决办法
3万
查看次数

将虚拟列添加到原始数据帧

我的数据框看起来像这样:

             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 …

python dataframe pandas one-hot-encoding

34
推荐指数
1
解决办法
2万
查看次数

一个使用numpy的热编码

如果输入为零,我想创建一个如下所示的数组:

[1,0,0,0,0,0,0,0,0,0]
Run Code Online (Sandbox Code Playgroud)

如果输入为5:

[0,0,0,0,0,1,0,0,0,0]
Run Code Online (Sandbox Code Playgroud)

对于上面我写道:

np.put(np.zeros(10),5,1)
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

有什么方法可以在一行中实现吗?

python numpy one-hot-encoding

34
推荐指数
3
解决办法
6万
查看次数

在几个DataFrame列上运行get_dummies?

如何get_dummies在多个DataFrame列上以惯用方式运行一个函数,它需要单个列并返回多个列?

python dataframe pandas one-hot-encoding

33
推荐指数
3
解决办法
5万
查看次数

scikit-learn:字符串分类功能的一种热门编码

我正在尝试执行一个简单数据集的热编码.

data = [['a', 'dog', 'red']
        ['b', 'cat', 'green']]
Run Code Online (Sandbox Code Playgroud)

使用Scikit-Learn预处理此数据的最佳方法是什么?

在第一直觉上,你会看到Scikit-Learn的OneHotEncoder.但是一个热门编码器不支持字符串作为功能; 它只会离散整数.

那么你将使用LabelEncoder,它将字符串编码为整数.但是,您必须将标签编码器应用到每个列中,并存储这些标签编码器中的每一个(以及它们所应用的列).这感觉非常笨重.

那么,在Scikit-Learn中最好的方法是什么?

请不要建议pandas.get_dummies.这就是我现在通常使用的一种热编码方式.但是,它无法单独编码您的训练/测试集.

python encoding scikit-learn one-hot-encoding

30
推荐指数
2
解决办法
1万
查看次数

将2d矩阵转换为3d one热矩阵numpy

我有np矩阵,我想将其转换为3d数组,其中元素的热编码为第三维.有没有办法处理没有循环每一行,例如

a=[[1,3],
   [2,4]]
Run Code Online (Sandbox Code Playgroud)

应该做成

b=[[1,0,0,0], [0,0,1,0],
   [0,1,0,0], [0,0,0,1]]
Run Code Online (Sandbox Code Playgroud)

python numpy vectorization one-hot-encoding

15
推荐指数
1
解决办法
5599
查看次数

如何使用 Keras 对字符串列表进行热编码?

我有一个清单:

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']
Run Code Online (Sandbox Code Playgroud)

我想转换为一种热编码。我试过:

to_categorical(code)
Run Code Online (Sandbox Code Playgroud)

我收到一个错误: ValueError: invalid literal for int() with base 10: '<s>'

我究竟做错了什么?

python keras one-hot-encoding

14
推荐指数
2
解决办法
8144
查看次数

如何在使用sklearn进行one-hot编码后给出列名?

这是我的问题,我希望有人能帮我弄清楚..

解释一下,我的数据集中有 10 多个类别列,每个类别都有 200-300 个类别。我想将它们转换为二进制值。为此,我使用第一个标签编码器将字符串类别转换为数字。标签编码器代码和输出如下所示。

https://i.stack.imgur.com/MIVHV.png

在标签编码器之后,我再次使用了来自 scikit-learn 的 One Hot Encoder 并且它有效。但问题是,我需要一个热编码器后的列名。例如,在编码前具有分类值的 A 列。A = [1,2,3,4,..]

编码后应该是这样的

A-1、A-2、A-3

任何人都知道如何在一次热编码后将列名分配给(旧列名 - 值名称或编号)。这是我的一种热编码及其输出;

https://i.stack.imgur.com/kgrNa.png

我需要带名称的列,因为我训练了一个 ANN,但是每次出现数据时,我都无法一次又一次地转换所有过去的数据。所以,我想每次都添加新的。还是谢谢..

python encoding scikit-learn one-hot-encoding

14
推荐指数
2
解决办法
1万
查看次数