第1回 †
計算機による学習理論2019 †
さくらエディタのインストール †
- ここから sakura_install2-2-0-1.exe (2.2.0.1) をクリックしてインストーラをダウンロードしてください。
Pythonの基礎 †
N次元の論理演算の入出力データ作成 †
import random
N=3
learn_data=[]
for i in range(2**N):
bin_str=format(i,"0"+str(N)+"b") # N桁の2進数の文字列へ
bin_str_arr=list(bin_str) # 文字の配列へ
bin_arr=[int(x) for x in bin_str_arr] # 数字の配列へ
learn_data.append(bin_arr)
learn_label=[random.randint(0,1) for x in range(2**N)]
print(learn_data)
print(learn_label)
機械学習の基礎 †
N次元論理演算の学習 †
- N次元の全入力データに対してランダムにラベル付けを行い学習する。
- コメントを付け替えることでLinearSVCとKNeighborsClassifierを切り替えることができる。
from sklearn.svm import LinearSVC
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
import random
N=10
learn_data=[]
for i in range(2**N):
bin_str=format(i,"0"+str(N)+"b") # 2進数の文字列へ
bin_str_arr=list(bin_str) # 文字の配列へ
bin_arr=[int(x) for x in bin_str_arr] # 数字の配列へ
learn_data.append(bin_arr)
learn_label=[random.randint(0,1) for x in range(2**N)]
clf=LinearSVC()
#clf=KNeighborsClassifier(n_neighbors=1)
clf.fit(learn_data,learn_label)
test_data=learn_data
test_label=clf.predict(test_data)
print(test_data,"の予測:",test_label)
print(test_data,"の正解:",learn_label)
print("正解率=",accuracy_score(learn_label,test_label))
アヤメの分類の方法 †
- 上記のコードでは3つの方法で分類を行っている。
- LinearSVC: 4次元空間を線形分離している。
- KNeighborsClassifier: n=5なので近い5個で多数決をとっている。
- SVC: カーネル変換を行って次元を増やして線形分離性を増している。

- カーネル変換のイメージ
- 1次元では線形分離不可能なデータだが、2次元二次元を上げると線形分離可能になる(こともある)。

ワインの品質評価 †
- 基本的にはアヤメの分類と同じ。
- 評価ラベルが0から10までの11段階なので、サンプルが少ないデータはうまく学習できない。
- 評価ラベルをまとめて付け直すことで、精度が向上する。
気温予測 †
- 過去6日間のデータから翌日の気温を予測する。
- この問題は割と簡単で、線形回帰でもかなりの精度で予測できる。

クロスバリデーションとグリッドサーチ †
次世代IT人材育成セミナー2019