前提・実現したいこと
前回の質問と似てはいますが、別の内容となるため再投稿です。
実現したいことは、以下方法で多次元のベクトル880次元となった場合、cosine_similarityなどで、相関表を作りたい。
年齢50以上 | 貯蓄100万以上 | 家族有無 | ペット | 要素 | 要素 | 要素 | 要素 | 要素 | 要素 | 要素 |
---|---|---|---|---|---|---|---|---|---|---|
1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 |
0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 |
0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 |
0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 |
ある人物がいろいろな要素をもっていて新しい人物がどんな回答をするかの予測をするかを推論したい。
該当のソースコードや方法
それぞれの人物のベクトルをリストに入れています。
|D|1|0|1|0|1|1|0|0|1|0|0|
↓
vec_list
python
1[[1,0,1,0,1,1,0,0,1,0,0],[0,1,0,0,0,0,0,0,1,0,0],…[],[]]
python
1array = np.round(cosine_similarity(vec_list, vecs_list,3)
問題点
880次元となった場合、cosine_similarityですと、相関性表がすべて1になってしまいます。
[[0,1,0,1,0,1,1,1,1,1,0,…880個],[1,1,1,1,0,0,0,1,0,…880個],…500個]
↓
これらをvec_listに入れても以下のような結果になってしまいます。
試した方法
cosine_similarityを使う前にデータを文字列から数値に変換する必要性があるのですが、そこであえて特徴量を増加させようと880倍してみたり、880で割るなどをしてみましたが、結果は同じでした。
python
1 import numpy as np 2 from sklearn.metrics.pairwise import cosine_similarity 3 from numpy import nan 4 import pandas as pd 5 import codecs 6 7 import csv 8 feature_list = [] 9 with open("feature_data.csv") as f: 10 for row in csv.reader(f): 11 feature_list.append(row) 12 13 cosine_list_parent = [] 14 cosine_list = [] 15 for f_list_ch in feature_list: 16 for f_list_ch_ch in f_list_ch: 17 cosine_list.append(int(f_list_ch_ch)*8800) 18 cosine_list_parent.append(cosine_list)
他に最適な方法があるなど何かアドバイス頂けないでしょうか。よろしくお願い致します。
補足情報(FW/ツールのバージョンなど)
win10
python3.7
Google Colab
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。