One-Hot符号化
1712 ワード
独熱符号化はOne-Hot符号化であり、Nビット状態レジスタを用いてN個の状態を符号化する方法であり、各状態は独立したレジスタビットであり、いずれの場合も1ビットしか有効ではない.独熱符号化は上記の問題を解決する良い方法である.しかし、データもまばらになった.[{‘city’:‘北京’,‘location’:‘北方’,‘temperature’:100},{‘city’:‘上海’,‘location’:‘南方’,‘temperature’:60},{‘city’:‘深セン’,‘location’:‘南方’,‘temperature’:30},{‘city’:‘深セン’,‘temperature’:20}]上記ではcityカテゴリをデジタル化し,123分表を用いて北京,北京,上海、深セン特徴量が非常に少ない場合,このような単純デジタル化方式を用いて1つのカテゴリを表すことは可能であるが,大量の特徴に直面した場合,この方式を用いて1つのカテゴリを一意に表すことはできないことが分かった.one-hot符号化がちょうど合っているという問題は、cityの特徴について、ここで3つのカテゴリがあることを発見しました.では、3つのステータスビットを使ってそれぞれ表すことができますか.locationについては2つのステータスビットを使って表すことができますか.特徴city:北京:100上海:010深セン:001
特徴locationについて:北01南方10
フィーチャーtemperatureでは、one-hot符号化は使用されません.
サンプル1については、100,01,100と符号化される
得られた出力結果は、ndarray配列である.[‘city=上海’,‘city=北京’,‘city=深セン’,‘location=北方’,‘location=南方’,‘temperature’][[0.1.1.100.][ 1. 0. 0. 0. 1. 60.] [ 0. 0. 1. 0. 1. 30.] [ 0. 0. 1. 0. 1. 20.]]
特徴locationについて:北01南方10
フィーチャーtemperatureでは、one-hot符号化は使用されません.
サンプル1については、100,01,100と符号化される
from sklearn.feature_extraction import DictVectorizer
import numpy as np
def dictvec():
'''
return None
'''
#
# dict = DictVectorizer() # sparse True
dict = DictVectorizer(sparse=False) # data ndarray
# fit_transform
data = dict.fit_transform([{'city': ' ','location':' ','temperature':100},
{'city': ' ','location':' ','temperature':60},
{'city': ' ','location':' ','temperature':30},
{'city': ' ','location':' ','temperature':20}])
print(dict.get_feature_names())
# : ,
print(data)
return None
if __name__ == '__main__':
dictvec()
得られた出力結果は、ndarray配列である.[‘city=上海’,‘city=北京’,‘city=深セン’,‘location=北方’,‘location=南方’,‘temperature’][[0.1.1.100.][ 1. 0. 0. 0. 1. 60.] [ 0. 0. 1. 0. 1. 30.] [ 0. 0. 1. 0. 1. 20.]]