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

質問編集履歴

6

誤字

2021/08/11 02:34

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -9,8 +9,8 @@
9
9
 
10
10
 
11
11
  ```
12
- dataset[0] = {'train':[0 1 2 3 4 5 6 7], 'test':[8 9]}
12
+ dataset[0] = {'train':[0, 1, 2, 3, 4, 5, 6, 7], 'test':[8, 9]}
13
- dataset[1] = {'train':[2 3 4 5 6 7 8 9], 'test':[0 1]}
13
+ dataset[1] = {'train':[2, 3, 4, 5, 6, 7, 8, 9], 'test':[0, 1]}
14
14
  dataset[2]
15
15
  dataset[3]
16
16
  dataset[4]
@@ -28,13 +28,15 @@
28
28
 
29
29
  ```python
30
30
  from sklearn.model_selection import train_test_split
31
+ a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
31
- a_train, a_test = train_test_split(a, test_size=0.2, shuffle=False)
32
+ a_train, a_test = train_test_split(a,test_size=0.2,random_state=0)
32
33
 
33
34
  print(a_train)
34
- # [0 1 2 3 4 5 6 7]
35
+ print(a_test)
35
36
 
37
+ #出力
36
- print(a_test)
38
+ [4, 9, 1, 6, 7, 3, 0, 5]
37
- # [8 9]
39
+ [2, 8]
38
40
  ```
39
41
 
40
42
  ### 試したこと

5

誤字

2021/08/11 02:34

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -38,7 +38,7 @@
38
38
  ```
39
39
 
40
40
  ### 試したこと
41
- 5分割に関しては[以下のコード](https://qiita.com/LicaOka/items/c6725aa8961df9332cc7をもとに分割を試しましたが、この場合、訓練とテスト用データの割合が指定できず、indexを指定するには別のエラーも発生してしまっている状態です。
41
+ 5分割に関しては[以下のコード](https://qiita.com/LicaOka/items/c6725aa8961df9332cc7)をもとに分割を試しましたが、この場合、訓練とテスト用データの割合が指定できず、indexを指定するには別のエラーも発生してしまっている状態です。
42
42
  ```
43
43
  def cross_validate(session, split_size=5):
44
44
  results = []

4

試したことの追記

2021/08/11 02:27

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -35,4 +35,60 @@
35
35
 
36
36
  print(a_test)
37
37
  # [8 9]
38
+ ```
39
+
40
+ ### 試したこと
41
+ 5分割に関しては[以下のコード](https://qiita.com/LicaOka/items/c6725aa8961df9332cc7をもとに分割を試しましたが、この場合、訓練とテスト用データの割合が指定できず、indexを指定するには別のエラーも発生してしまっている状態です。
42
+ ```
43
+ def cross_validate(session, split_size=5):
44
+ results = []
45
+ kf = KFold(n_splits=split_size)
46
+ for train_idx, val_idx in kf.split(train_x_all, train_y_all):
47
+ train_x = train_x_all[train_idx]
48
+ train_y = train_y_all[train_idx]
49
+ val_x = train_x_all[val_idx]
50
+ val_y = train_y_all[val_idx]
51
+ run_train(session, train_x, train_y)
52
+ results.append(session.run(accuracy, feed_dict={x: val_x, y: val_y}))
53
+ return results
54
+ ````
55
+
56
+ 実行コード
57
+ ```
58
+ from sklearn.model_selection import KFold
59
+
60
+ def cross_validate(nums, nums_str, split_size=5):
61
+ results = []
62
+ kf = KFold(n_splits=split_size)
63
+ for train_idx, val_idx in kf.split(nums, nums_str):
64
+ print(train_idx, val_idx)
65
+ print(nums[1])
66
+ train_x = nums[train_idx]
67
+ train_y = nums_str[train_idx]
68
+ val_x = nums[val_idx]
69
+ val_y = nums_str[val_idx]
70
+
71
+ cross_validate([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'], split_size=5)
72
+ ```
73
+
74
+ エラー
75
+ ```
76
+ [2 3 4 5 6 7 8 9] [0 1]
77
+ 1
78
+ ---------------------------------------------------------------------------
79
+ TypeError Traceback (most recent call last)
80
+ in <module>()
81
+ 14 val_y = nums_str[val_idx]
82
+ 15
83
+ ---> 16 cross_validate([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'], split_size=5)
84
+
85
+
86
+ in cross_validate(nums, nums_str, split_size)
87
+ 9 print(train_idx, val_idx)
88
+ 10 print(nums[1])
89
+ ---> 11 train_x = nums[train_idx]
90
+ 12 train_y = nums_str[train_idx]
91
+ 13 val_x = nums[val_idx]
92
+
93
+ TypeError: only integer scalar arrays can be converted to a scalar index
38
94
  ```

3

強調

2021/08/11 02:26

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,6 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- scikit-learnでデータ分割するときに、ランダムではなく先頭から順番に分割した後で、
3
+ `scikit-learn`でデータ分割するときに、ランダムではなく先頭から順番に分割した後で、
4
4
  そのデータ分割結果を指定して、検証データ・訓練データとしたいです。
5
5
 
6
6
  [0]~[4]までそれぞれの分割結果をindexで指定して確認しようとしています。

2

やりたいことの補足

2021/08/11 01:59

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,9 +1,12 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- scikit-learnでデータ分割するときに、ランダムではなく先頭から順番に分割した後で、そのデータ分割結果を指定して、検証データ・訓練データとしたいです。
3
+ scikit-learnでデータ分割するときに、ランダムではなく先頭から順番に分割した後で、
4
+ そのデータ分割結果を指定して、検証データ・訓練データとしたいです。
4
5
 
5
6
  [0]~[4]までそれぞれの分割結果をindexで指定して確認しようとしています。
6
7
 
8
+ **つまり、順番は固定して分割したデータを、区画ごとに参照したいです。**
9
+
7
10
 
8
11
  ```
9
12
  dataset[0] = {'train':[0 1 2 3 4 5 6 7], 'test':[8 9]}

1

例の追加

2021/08/11 01:58

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -2,14 +2,25 @@
2
2
 
3
3
  scikit-learnでデータ分割するときに、ランダムではなく先頭から順番に分割した後で、そのデータ分割結果を指定して、検証データ・訓練データとしたいです。
4
4
 
5
- 以下、のように[0]~[4]までそれぞれの分割結果をindexで指定しようとしています。
5
+ [0]~[4]までそれぞれの分割結果をindexで指定して確認しようとしています。
6
6
 
7
+
8
+ ```
9
+ dataset[0] = {'train':[0 1 2 3 4 5 6 7], 'test':[8 9]}
10
+ dataset[1] = {'train':[2 3 4 5 6 7 8 9], 'test':[0 1]}
11
+ dataset[2]
12
+ dataset[3]
13
+ dataset[4]
14
+ ```
15
+
7
16
  図の出典元:Qiita記事「[比較的少なめのデータで機械学習する時は交差検証 (Cross Validation) をするのです](https://qiita.com/LicaOka/items/c6725aa8961df9332cc7)」
8
17
  ![イメージ説明](5eb8793694b79a2fb351817b872cd046.png)
9
18
 
19
+
10
20
  ### 発生している問題・エラーメッセージ
11
21
  現在のコードだとランダムは回避できているのですが、どこに配列番号が格納されているのか、また5回と指定してその候補(例えば、train[2 3 4 5 6 7 8 9] test[0 1])を確認できない状態です。
12
22
 
23
+
13
24
  ### 該当のソースコード
14
25
 
15
26
  ```python