発生している問題・エラーメッセージ
当方、農作物の研究をしております。 過去十数年にわたり国内約100か所で気象データや土壌の状態に関する指標約80種を調査した結果がexcelのinputシートに、 また同年の収穫時期(1:9月上旬、2:9月中旬・・・6:月下旬として、多クラス分類されてます)を調査した結果が 同じブック内のanswerシートにそれぞれ約2000件入力されています。 これら80種の指標と収穫時期の関係をSVMで学習して当年の収穫時期の予測に活用できないかを試しており、以下を記述したところ、 得られるtest_dataの回答がすべて同じクラスになってしまいます。
該当のソースコード
python3 import pandas as pd import numpy as np from sklearn import svm, metrics, cross_validation from sklearn.model_selection import train_test_split from sklearn.metrics import confusion_matrix from mlxtend.plotting import plot_decision_regions filename = "gloth.xlsx" input_sheet_name = "input" answer_sheet_name = "answer" input_book = pd.read_excel(filename, sheet_name=input_sheet_name) answer_book = pd.read_excel(filename, sheet_name=answer_sheet_name) new_input_book = input_book.drop(0, axis=0) #inputシートの0行目はデータ収集中のため、除外していいます。 new_answer_book = answer_book.drop(0, axis=0) #answerシートの0行目はデータ未調査で空欄のため、除外しています。 xlsx_data = new_input_book[["MAX_TEM","MIN_TEM"・・・,"SEIIKU_1","SEIIKU_2"]] #指標はinputシートに80種程度入力しています xlsx_label = new_answer_book[["Group"]] #収穫時期は多クラス分類してanswerシートに入力しています train_data, test_data, train_label, test_label = cross_validation.train_test_split(xlsx_data, xlsx_label,test_size=0.2) clf = svm.SVC(kernel='rbf', gamma=1/80, C=10.0) clf.fit(train_data, train_label.values.ravel()) pre = clf.predict(test_data) ac_score = metrics.accuracy_score(test_label, pre) print("正解率=", ac_score)
試したこと
print(pre)
でtest_dataの予測結果を確認したところ、いずれのデータの予測もすべて「1」として分類されているため、
正解率は16~20%と大変低くなってしまいます。
補足情報(FW/ツールのバージョンなど)
プログラムは、jupyter notebookで記述しています。
機械学習の勉強を始めて1か月程度の素人です。
不足している情報がありましたら
お伝えしたいと思いますので、よろしくお願いします。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/22 08:41
2018/03/22 13:59
2018/03/22 23:24
2018/03/23 14:17 編集
2018/03/23 15:26
2018/03/24 00:29
2018/03/26 12:11
2018/03/26 13:08