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

回答編集履歴

1

追記

2018/06/15 17:24

投稿

hayataka2049
hayataka2049

スコア30939

answer CHANGED
@@ -1,2 +1,34 @@
1
1
  40件のデータで`validation_split=0.1`って、4件でバリデーションすることになります。各動作1つずつ。これは各ラベルごとに均等に振られる保障とかもないらしいので、なんだか怪しいです。
2
- 他のミスとか見落としているかもしれませんが、とりあえず最初に気になったのはそこです。0.5くらいにしたら平然と動いたりしませんか。
2
+ 他のミスとか見落としているかもしれませんが、とりあえず最初に気になったのはそこです。0.5くらいにしたら平然と動いたりしませんか。
3
+
4
+ ### 追記
5
+ ```python
6
+ y_keras=keras.utils.to_categorical(y,n_classes)
7
+ ```
8
+ 以下を消してこのコードを挿入。交差検証した正解率が出てきます。
9
+
10
+ ```python
11
+ from sklearn.ensemble import RandomForestClassifier
12
+ from sklearn.naive_bayes import GaussianNB
13
+ from sklearn.model_selection import cross_validate
14
+
15
+ # 以下4行は消す。消さないでこのコードだけ1つのファイルにまとめて書くと、digitsで動く
16
+ from sklearn.datasets import load_digits
17
+ digits = load_digits()
18
+ X = digits.data # X=np.array(df)で作ったXになるように
19
+ y = digits.target # y=np.array([0,1,1,1,1,...で作ったyになるように
20
+
21
+ rfc = RandomForestClassifier(n_estimators=1000, n_jobs=-1)
22
+ gnb = GaussianNB()
23
+
24
+ for name, clf in zip(["RandomForest", "GaussianNB"], [rfc, gnb]):
25
+ d = cross_validate(clf, X, y, cv=4, scoring="accuracy", n_jobs=-1)
26
+ print(name)
27
+ print("accuracy:{:.5f}".format(d["test_score"].mean()))
28
+ """ => こんな感じ
29
+ RandomForest
30
+ accuracy:0.94273
31
+ GaussianNB
32
+ accuracy:0.80866
33
+ """
34
+ ```