One Hot Encoder
예.
import pandas as pd
s = pd.Series(list('abcda'))
pd.get_dummies(s).T
0
1
2
3
4
a
1
0
0
0
1
b
0
1
0
0
0
c
0
0
1
0
0
d
0
0
0
1
0
인 코딩 지정 열
import pandas as pd
df = pd.DataFrame({
'A':['a','b','a'],
'B':['b','a','c']
})
df
Out[]:
A B
0 a b
1 b a
2 a c
# Get one hot encoding of columns B
one_hot = pd.get_dummies(df['B'])
# Drop column B as it is now encoded
df = df.drop('B',axis = 1)
# Join the encoded df
df = df.join(one_hot)
df
Out[]:
A a b c
0 a 0 1 0
1 b 1 0 0
2 a 0 0 1
pd.factorize( ['B', 'C', 'D', 'B'] )[0]
[0, 1, 2, 0]
#2. numpy eye()
import numpy as np
def one_hot_encode(x, n_classes):
"""
One hot encode a list of sample labels. Return a one-hot encoded vector for each label.
: x: List of sample Labels
: return: Numpy array of one-hot encoded labels
"""
return np.eye(n_classes)[x]
def main():
list = [0,1,2,3,4,3,2,1,0]
n_classes = 5
one_hot_list = one_hot_encode(list, n_classes)
print(one_hot_list)
if __name__ == "__main__":
main()
[[ 1. 0. 0. 0. 0.]
[ 0. 1. 0. 0. 0.]
[ 0. 0. 1. 0. 0.]
[ 0. 0. 0. 1. 0.]
[ 0. 0. 0. 0. 1.]
[ 0. 0. 0. 1. 0.]
[ 0. 0. 1. 0. 0.]
[ 0. 1. 0. 0. 0.]
[ 1. 0. 0. 0. 0.]]
#3. tf.one_hot
import numpy as np
import tensorflow as tf
indices = [0, 1, 2]
depth = 3
T1 = tf.one_hot(indices, depth) # output: [3 x 3]
indices = [0, 2, -1, 1]
depth = 3
T2 = tf.one_hot(indices, depth,
on_value=5.0, off_value=0.0,
axis=-1) # output: [4 x 3]
#depth: one hot
#on_value: feature , 1
#off_value: , 0
#axis:
indices = [[0, 2], [1, -1]]
depth = 3
T3 = tf.one_hot(indices, depth,
on_value=1.0, off_value=0.0,
axis=-1) # output: [2 x 2 x 3]
with tf.Session() as sess:
print(sess.run(T1))
print(sess.run(T2))
print(sess.run(T3))
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
[[5. 0. 0. 0.]
[0. 0. 0. 5.]
[0. 5. 0. 0.]]
[[[1. 0. 0.]
[0. 0. 1.]]
[[0. 1. 0.]
[0. 0. 0.]]]
#4. sklearn.preprocessing.OneHotEncoder
방법
fit
(self, X[, y]) Fit OneHotEncoder to X.
fit_transform
(self, X[, y]) Fit OneHotEncoder to X, then transform X.
get_feature_names
(self[, input_features]) Return feature names for output features.
get_params
(self[, deep]) Get parameters for this estimator.
inverse_transform
(self, X) Convert the back data to the original representation.
set_params
(self, **params) Set the parameters of this estimator.
transform
(self, X) Transform X using one-hot encoding.
예.
from sklearn.preprocessing import OneHotEncoder
enc = OneHotEncoder(handle_unknown='ignore')
X = [['Male', 1], ['Female', 3], ['Female', 2]]
enc.fit(X)
enc.categories_
enc.transform([['Female', 1], ['Male', 4]]).toarray()
array([[1., 0., 1., 0., 0.],
[0., 1., 0., 0., 0.]])
# , 1 4
enc.inverse_transform([[0, 1, 1, 0, 0], [0, 0, 0, 1, 0]])
array([['Male', 1],
[None, 2]], dtype=object)
enc.get_feature_names()
drop_enc = OneHotEncoder(drop='first').fit(X)
drop_enc.categories_
drop_enc.transform([['Female', 1], ['Male', 2]]).toarray()
array([[0., 0., 0.],
[1., 1., 0.]])
참고:
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.