回答編集履歴

1

追記

2018/06/15 17:24

投稿

hayataka2049
hayataka2049

スコア30933

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