回答編集履歴

1

d

2019/10/21 06:08

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -24,7 +24,17 @@
24
24
 
25
25
 
26
26
 
27
+ ## 学習時
28
+
29
+
30
+
27
31
  ```python
32
+
33
+ import pickle
34
+
35
+
36
+
37
+ import numpy as np
28
38
 
29
39
  from sklearn import svm
30
40
 
@@ -38,13 +48,23 @@
38
48
 
39
49
  # データセットを作成する。
40
50
 
41
- X, y = make_blobs(n_samples=100, centers=2, random_state=0)
51
+ X, y = make_blobs(n_samples=1000, centers=2, random_state=0)
42
-
43
- X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.15)
44
52
 
45
53
 
46
54
 
55
+ # ホールドアウト分割する。
56
+
57
+ X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.15, stratify=y, random_state=0)
58
+
59
+
60
+
61
+ # テストデータは保存しておく。
62
+
63
+ np.savez("test.npz", X=X_test, y=y_test)
64
+
65
+
66
+
47
- # 標準化する。
67
+ # 学習データを標準化する。
48
68
 
49
69
  sc = StandardScaler()
50
70
 
@@ -54,15 +74,53 @@
54
74
 
55
75
  # 学習する。
56
76
 
57
- clf = svm.LinearSVC(C=1)
77
+ clf = svm.LinearSVC(C=1, random_state=0)
58
78
 
59
79
  clf.fit(X_train_std, y_train)
60
80
 
61
81
 
62
82
 
63
- # 推論する。
83
+ # 保存する。
64
84
 
85
+ pickle.dump(clf, open("svm.pickle", "wb"))
86
+
87
+ pickle.dump(sc, open("scaler.pickle", "wb"))
88
+
89
+ ```
90
+
91
+
92
+
93
+ ## 推論時
94
+
95
+
96
+
97
+ ```python
98
+
99
+ import pickle
100
+
101
+
102
+
103
+ import numpy as np
104
+
105
+
106
+
107
+ # 読み込む。
108
+
109
+ clf = pickle.load(open("svm.pickle", "rb"))
110
+
111
+ sc = pickle.load(open("scaler.pickle", "rb"))
112
+
113
+ test_data = np.load("test.npz")
114
+
115
+
116
+
117
+ # テストデータを標準化する。
118
+
65
- X_test_std = sc.transform(X_test)
119
+ X_test_std = sc.transform(test_data["X"])
120
+
121
+
122
+
123
+ # 予測する。
66
124
 
67
125
  y_pred = clf.predict(X_test_std)
68
126