前提・実現したいこと
二値分類を二回行い3クラスに分類するロジスティック回帰についてです。デバックした結果predicted_label1 = pipe_lr1.predict(test_data)とpredicted_label2 = pipe_lr2.predict(test_data)の部分がループのたびに更新されていませんでした。なにが間違えているのでしょうか?
発生している問題・エラーメッセージ
エラーはありません
該当のソースコード
#LOO交差検定によるグリッドサーチでのハイパーパラメータの探索 param_range_lr_c1=[10**i for i in range(-5,6)] param_range_kpca_gamma1=[10**i for i in range(-5,6)] param_range_lr_c2=[10**i for i in range(-5,6)] param_range_kpca_gamma2=[10**i for i in range(-5,6)] entire_count1=len(targets1) entire_count2=len(targets2) predicted_labels1=[] predicted_labels2=[] best_score=0 for lr_c1 in param_range_lr_c1: for kpca_gamma1 in param_range_kpca_gamma1: for lr_c2 in param_range_lr_c2: for kpca_gamma2 in param_range_kpca_gamma2: sckit_kpca1=KPCA(n_components=None,kernel='rbf',gamma=kpca_gamma1) sckit_kpca2=KPCA(n_components=None,kernel='rbf',gamma=kpca_gamma2) correct_answer_count=0 for test_index in range(entire_count1): test_index=np.array([test_index]) train_array1=np.array([range(entire_count1)]) train_index1=np.delete(train_array1,test_index) train_data1=np.delete(features1,test_index,0) test_data=features1[test_index] targets_train1=np.delete(targets1,test_index,0) targets_test1=targets1[test_index] pipe_lr1=make_pipeline(StandardScaler(),\ sckit_kpca1,\ LogisticRegression(penalty="l2",\ C=lr_c1,\ random_state=1,\ )) pipe_lr1.fit(train_data1,targets_train1) predicted_label1 = pipe_lr1.predict(test_data)#この部分が更新されません predicted_labels1.append(predicted_label1) if predicted_label1==targets_test1: #正解 if predicted_label1==0: #その他をその他 train_array2=np.array([range(entire_count2)]) train_index2=np.delete(train_array2,test_index) train_data2=np.delete(features2,test_index,0) test_data=features2[test_index] targets_train2=np.delete(targets2,test_index,0) targets_test2=targets2[test_index] pipe_lr2=make_pipeline(StandardScaler(),\ sckit_kpca2,\ LogisticRegression(penalty="l2",\ C=lr_c2,\ random_state=1,\ )) pipe_lr2.fit(train_data2,targets_train2) predicted_label2 = pipe_lr2.predict(test_data)#この部分が更新されません predicted_labels2.append(predicted_label2) if predicted_label2==targets_test2: correct_answer_count+=1 if targets_test2==1: #健常を健常で正解 pass else: #うつをうつで正解 pass else: if targets_test2==0:#うつを健常のミス pass else: #健常をうつのミス pass else: #不安を不安 correct_answer_count+=1 else: if targets_test1==0:#不安をその他のミス pass else: #その他を不安のミス pass test_score=float(correct_answer_count)/float(entire_count1) if test_score > best_score: best_score=test_score best_params={"kpca_gamma1":kpca_gamma1,"lr_c1":lr_c1,"kpca_gamma2":kpca_gamma2,"lr_c2":lr_c2} print(best_score) print(best_params)
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。