Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/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_One Hot Encoding - Fatal编程技术网

Python 如何有效地将布尔表转换为热向量?

Python 如何有效地将布尔表转换为热向量?,python,one-hot-encoding,Python,One Hot Encoding,比如说,我有一张这样的桌子- Movie Action Scifi Drama Romance Abc True False False False Def False False True False Ghi False False False T

比如说,我有一张这样的桌子-

Movie        Action      Scifi       Drama          Romance
Abc           True       False       False            False
Def           False      False        True            False
Ghi           False      False       False            True
我想把它转换成一个热向量,这样

Abc - [1   0    0   0]'
Def - [0   0    1   0]'
Ghi - [0   0    0   1]'
众所周知,只有一列是真的


在python中有没有有效的方法可以做到这一点?

您可以使用
numpy
来做到这一点

import numpy as np

Abc = np.array([True,False,False,False])
Def = np.array([False,False,True,False])
Ghi = np.array([False,False,False,True])
movies = np.array([Abc, Def, Ghi])
print("Input:")
print(movies)

#casting from boolean to integer
result  = np.array(movies, dtype=np.int)

print("Output:")
print(result)

您可以使用
numpy
执行此操作

import numpy as np

Abc = np.array([True,False,False,False])
Def = np.array([False,False,True,False])
Ghi = np.array([False,False,False,True])
movies = np.array([Abc, Def, Ghi])
print("Input:")
print(movies)

#casting from boolean to integer
result  = np.array(movies, dtype=np.int)

print("Output:")
print(result)

好的,所以我找到了一种方法来处理更大的数据集

df['genre'] = pd.Series(np.random.randn(size), index=df.index)
for i in range(len(df)):
    if df.iloc[i]['action'] == True:
        df.at[i, 'genre'] = 0        
    elif df.iloc[i]['scifi'] == True:
        df.at[i, 'genre'] = 1
    elif df.iloc[i]['drama'] == True:
        df.at[i, 'genre'] = 2
    elif df.iloc[i]['romance'] == True:
        df.at[i, 'genre'] = 3
因此,通过这样做,我们将在数据框架中创建一个名为“流派”的新列,并为其提供适当的值。此后,

y = df['genre']
import tensorflow as tf
y_categorical = tf.keras.utils.to_categorical(y)

这将完成将其转换为一个热向量的工作

好的,所以我找到了一种方法来处理更大的数据集

df['genre'] = pd.Series(np.random.randn(size), index=df.index)
for i in range(len(df)):
    if df.iloc[i]['action'] == True:
        df.at[i, 'genre'] = 0        
    elif df.iloc[i]['scifi'] == True:
        df.at[i, 'genre'] = 1
    elif df.iloc[i]['drama'] == True:
        df.at[i, 'genre'] = 2
    elif df.iloc[i]['romance'] == True:
        df.at[i, 'genre'] = 3
因此,通过这样做,我们将在数据框架中创建一个名为“流派”的新列,并为其提供适当的值。此后,

y = df['genre']
import tensorflow as tf
y_categorical = tf.keras.utils.to_categorical(y)

这将完成将其转换为一个热向量的工作

谢谢您的回答,但我不确定这对于一个庞大的数据集是否可行。一定要核对我的答案。你的答案看起来也不错。您的数据集有多大?您有多少行/列?谢谢您的回答,但我不确定这对于一个庞大的数据集是否可行。一定要核对我的答案。你的答案看起来也不错。您的数据集有多大?您有多少行/列?