###前提・実現したいこと
現在,主成分分析を変数の組み合わせごとにブーストできるツールを作りたい.
今の状態↓
1.変数のパターン表を作成
2.パターン表をもとに繰り返し処理で因子分析をかける
3.辞書型で分析の結果を格納(printで出力すると以下のように出力されます)
[(変数1,変数3,変数6),array([9.733,2.144,0.002])
[解決したいこと]
パターンの数だけ結果がありますので,条件をかけて良い結果だけを抽出して,DataFrameとして格納したいのです.
・かけたい条件:array[数値1,数値2,数値3]の数値1の値が9より大きいものだけを抽出する.
###発生している問題・エラーメッセージ
辞書型
出ていません.
###該当のソースコード
Python
1import numpy as np 2import matplotlib.pyplot as plt 3import pandas 4import random 5import itertools 6from sklearn.decomposition import PCA 7import pickle 8#========= Data========================================# 9dataset = pandas.read_csv('demo01.csv') 10dataset_df = pandas.DataFrame(dataset) 11names = dataset_df.head(0) 12names_data = list(names) 13pattern_list = [] 14for kumiawase in itertools.combinations(names_data,5): 15 pattern_list.append(kumiawase) 16patternkey = dict.fromkeys(pattern_list) 17 18def PCAb(pattern_list): 19 for n,PCAboost in enumerate(pattern_list): 20 data_list = [] 21 for i in range(len(PCAboost)): 22 col_num = (dataset.columns==PCAboost[i]).tolist().index(True) 23 data_list.append(dataset.T.iloc[col_num][:]) 24 data = pandas.DataFrame(np.array(data_list).T, columns=PCAboost) 25 pca = PCA(n_components=3) 26 pcafit = pca.fit(X=data) 27 transformed = pcafit.transform(data) 28 #分析結果をもとにデータセットを主成分に変換する 29 variance_ratio = pca.explained_variance_ratio_ 30 patternkey[PCAboost] = variance_ratio 31 if n%10 : 32 with open('picklepcadata.pickle',mode='wb') as B: 33 pickle.dump(patternkey,B) 34 35PCAb(pattern_list) 36print(patternkey) 37 38
###試したこと
for x in patternkey:
for key,value in patternkey[x][PCAboost].items():
print(pattern,value_variance_ratio)
###補足情報(言語/FW/ツール等のバージョンなど)
ここを使用することが初めてで説明がわかりにくいかもしれません.もし不明な点がありましたら,ご指摘お願いします.プログラム初心者です.
python3
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/07 07:33 編集