Jupyter Notebookなどで、コードを実装して実際に確かめてみましょう。
Jetson Nanoでjupyter-notebookを使う場合
mglearnは入ってないのでインストールしておきます
$sudo pip3 install mglearn
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# import mglearn import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from sklearn.svm import LinearSVC from sklearn.datasets import load_iris iris = load_iris() #データは50番以降、特徴量はpetal_lengthとpetal_widthの2つを使う #targetは0、1の数字にしたいので1,2の数字を-1しておく x = iris.data[50:,2:] y = iris.target[50:] -1 #mglearnを使って散布図を描画 mglearn.discrete_scatter(x[:,0],x[:,1],y) plt.legend(['versicolor','virginica'],loc='best') plt.show() #実装 x_train,x_test,y_train,y_test = train_test_split(x,y,stratify=y,random_state=0) svm = LinearSVC().fit(x_train,y_train) def plot_separator(model): #グラフのサイズを指定 plt.figure(figsize=(10,6)) mglearn.plots.plot_2d_separator(model,x) #散布図を描画 mglearn.discrete_scatter(x[:,0],x[:,1],y) #軸の名前 plt.xlabel('petal length') plt.ylabel('petal width') #表示範囲 plt.xlim(2.8,7.0) plt.ylim(0.8,2.6) plt.show() plot_separator(svm) #ペナルティの度合い:ハイパーパラメータCをいじってどれくらい予測の違いがでるのか #デフォルトはC=1 svm_100 = LinearSVC(C=100).fit(x_train,y_train) plot_separator(svm_100) #scoreを見てみる #C=1の場合 print('score on training set : {:.2f}'.format(svm.score(x_train,y_train))) print('score on test set : {:.2f}'.format(svm.score(x_test,y_test))) #C=100の場合 print('score on training set : {:.2f}'.format(svm_100.score(x_train,y_train))) print('score on test set : {:.2f}'.format(svm_100.score(x_test,y_test))) #C=0.01の場合、自分でやってみよう |
Leave a Reply