41 個の特徴 [0 から 40 列] を持つデータセットがあり、そのうち 7 つはカテゴリです。このカテゴリ セットは、次の 2 つのサブセットに分割されます。
- 文字列型のサブセット (列機能 1、2、3)
- バイナリ形式 0 または 1 の int 型のサブセット (列機能 6、11、20、21)
さらに、列機能 1、2、および 3 (文字列型) には、それぞれカーディナリティ 3、66、および 11 があります。このコンテキストでは、サポート ベクター マシン アルゴリズムを使用するようにエンコードする必要があります。これは私が持っているコードです:
import numpy as np
import pandas as pd
from sklearn import preprocessing
from sklearn import feature_extraction
df = pd.read_csv("train.csv")
datanumpy = df.as_matrix()
X = datanumpy[:, 0:40] # select columns 1 through 41 (the features)
y = datanumpy[:, 41] # select column 42 (the labels)
[上で公開した理由により]どちらを使用するのが良いかはわかりませんが、ほとんどの場合、[コードの観点から]どちらの方法で、私が持っているマトリックスでそれらを使用DictVectorizer()
します。または、文字列型のサブセットの各カーディナリティに番号を割り当てるだけですか (カーディナリティが高く、機能空間が指数関数的に増加するため)。OneHotEncoder()
X
編集 int 型のサブセットに関しては、列の機能をそのままにしておくのが最善の選択だと思います (エンコーダーに渡さないでください)。カーディナリティの高い文字列型のサブセットでも問題は解決しません。