書いた内容
機械学習についてのメモ書き
機械学習とは?
人間が自然に行っている学習能力と同様の機能をコンピュータで実現しようとする技術・手法のこと
(Wikipedia)
今回利用するライブラリ
scikit-learn
機械学習のライブラリ。下記のようなデータセットが用意されている。
① Iris(アヤメの計測データ)
② Boston house-prices (ボストン市の住宅価格)
③ Diabetes (糖尿病患者の診断データ)
④ Digits (数字の手書き文字)
⑤ Linnerud (生理学的特徴と運動能力の関係)
今回は ④ Digits (数字の手書き文字) を利用
コード例
sample.py
#scikit-learnライブラリの読み込み
from sklearn import datasets,svm
#scilit-learnライブラリに付属しているデータセット"digits"を利用
digits = datasets.load_digits()
#データセット"digits"のうち、0番目のデータを8×8の行列に整形
print("-----digits['data'][0].reshape(8,8)----")
print(digits['data'][0].reshape(8,8))
#データセット"digits"の0番目のデータは、数字の0
print("-----digits.target----")
print(digits.target[0])
#サポートベクターマシン(というもの)を使って、分類
clf = svm.SVC()
clf.fit(digits.data,digits.target)
#仮に下記の"test_data"のようなデータは、どの数字に該当するか?を予測
test_data = [[0,1,2,0,1,2,3,4,0,1,2,0,1,2,3,4,0,1,2,0,1,2,3,4,0,1,2,0,1,2,3,4,0,1,2,0,1,2,3,4,0,1,2,0,1,2,3,4,0,1,2,0,1,2,3,4,0,1,2,0,1,2,3,4]]
print("-----予測----")
print(clf.predict(test_data))
出力結果
-----digits['data'][0].reshape(8,8)----
[[ 0. 0. 5. 13. 9. 1. 0. 0.]
[ 0. 0. 13. 15. 10. 15. 5. 0.]
[ 0. 3. 15. 2. 0. 11. 8. 0.]
[ 0. 4. 12. 0. 0. 8. 8. 0.]
[ 0. 5. 8. 0. 0. 9. 8. 0.]
[ 0. 4. 11. 0. 1. 12. 7. 0.]
[ 0. 2. 14. 5. 10. 12. 0. 0.]
[ 0. 0. 6. 13. 10. 0. 0. 0.]]
-----digits.target----
0
-----予測----
[5]
参考資料
python14日目の素人だけどscikit-learnで機械学習やってみたい
(scikit-learnのデータセット"Iris"を利用した記事)
Python でデータサイエンス
(scikit-learnのデータセットをわかりやすく紹介されている記事)
追記(2018.02.07)
もう少し詳細に機械学習を実装すると...
① データを、訓練データ・テストデータに分割
② 予測
③ 予測値の評価
コード例
ここでは、アヤメの分類を利用
sample.py
from sklearn import datasets,svm
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
iris = datasets.load_iris()
##説明変数
print("--------")
print(iris.data)
##目的変数
print("--------")
print(iris.target)
##トレーニングデータとテストデータを分割
iris_data_train,iris_data_test,iris_target_train,iris_target_test = train_test_split(iris.data,iris.target,test_size=0.3)
print("----iris_data_train----")
print(iris_data_train)
print(len(iris_data_train))
print("----iris_data_test----")
print(iris_data_test)
print(len(iris_data_test))
print("----iris_target_target----")
print(iris_target_test)
svc = svm.SVC()
svc.fit(iris_data_train,iris_target_train)
iris_predict = svm.SVC().fit(iris_data_train, iris_target_train).predict(iris_data_test)
##予測
print("----predict----")
print(svc.predict(iris_data_test))
##予測結果の評価
print("----score----")
print(accuracy_score(iris_target_test,iris_predict))