teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記

2020/03/20 22:57

投稿

hayataka2049
hayataka2049

スコア30939

answer CHANGED
@@ -4,6 +4,16 @@
4
4
 
5
5
  数値とダミー変数が混ざると、単純な相関ではかなり厳しくなるので、機械学習をおすすめします。
6
6
 
7
+ 実際に前処理をどうやるべきか? ですが、scikit-learnで書くとこんな感じです。
8
+
9
+ [6.1. Pipelines and composite estimators — scikit-learn 0.22.2 documentation](https://scikit-learn.org/stable/modules/compose.html#column-transformer)
10
+ [scikit-learnのColumnTransformerを使ってみる - 静かなる名辞](https://www.haya-programming.com/entry/2019/06/29/194801#OneHotEncoder%E3%81%A8%E3%81%AE%E7%B5%84%E3%81%BF%E5%90%88%E3%82%8F%E3%81%9B)(拙記事)
11
+
12
+ 自分で書いても良いのですが、one-hot変換をちゃんと実装するのはけっこう面倒くさいです。特段の理由がなければscikit-learnを(あるいは他の機械学習ライブラリを)勧めます。
13
+
14
+ ---
15
+
16
+
7
17
  > one-hotに拘らず、性別男は1、女は2、趣味が手芸なら1、ボクシングなら2…読書なら72などのように数値に変換してしまえば、1次元のベクトルになるとも考えました。これでベクトルを作り、あとはcorrcoefで比較し出す相関係数は結果参考にするには正しい考え方でしょうか。
8
18
 
9
19
  名義尺度の数値になりますので、うまくいきません。たとえば、「趣味:手芸」は「趣味:読書」より「趣味:ボクシング」に近いと考えることは無意味ですが、数値にエンコードして距離とか相関を測ると、そういうことをやるのと同じ結果になります。

1

追記

2020/03/20 22:57

投稿

hayataka2049
hayataka2049

スコア30939

answer CHANGED
@@ -2,4 +2,8 @@
2
2
 
3
3
  そもそも本当にカテゴリ数が合っているのかも疑問ですが、`[[1.], 1., [0.], [1.,0.]]`なら`[1., 1., 0., 1.,0.]`のような配列を得るべきです。また、年齢のようなnumericalな特徴量があるなら、それはそのまま入れるしかないでしょう。
4
4
 
5
- 数値とダミー変数が混ざると、単純な相関ではかなり厳しくなるので、機械学習をおすすめします。
5
+ 数値とダミー変数が混ざると、単純な相関ではかなり厳しくなるので、機械学習をおすすめします。
6
+
7
+ > one-hotに拘らず、性別男は1、女は2、趣味が手芸なら1、ボクシングなら2…読書なら72などのように数値に変換してしまえば、1次元のベクトルになるとも考えました。これでベクトルを作り、あとはcorrcoefで比較し出す相関係数は結果参考にするには正しい考え方でしょうか。
8
+
9
+ 名義尺度の数値になりますので、うまくいきません。たとえば、「趣味:手芸」は「趣味:読書」より「趣味:ボクシング」に近いと考えることは無意味ですが、数値にエンコードして距離とか相関を測ると、そういうことをやるのと同じ結果になります。