【入門者向け】scikit-learn(概要と簡単な動作確認)|Python入門 #14

f:id:lib-arts:20191003162137p:plain

#1ではPythonを用いたFizzBuzzのコーディングについてまとめました。

入門者の方に読んでみていただいたところ、少し難しかったようなので、#2〜#10ではPythonの基本文法をそれぞれもう少し丁寧に解説を行ないました。

【入門者向け】Pythonの基礎文法① 四則演算・文字列|Python入門 #2 - lib-arts’s diary

【入門者向け】Pythonの基礎文法② リスト・タプル・辞書|Python入門 #3 - lib-arts’s diary

【入門者向け】Pythonの基礎文法③ 制御構文(if、for)|Python入門 #4 - lib-arts’s diary

【入門者向け】Pythonの関数の実装|Python入門 #6 - lib-arts’s diary

【入門者向け】クラスの概要とPythonにおける実装|Python入門 #7 - lib-arts’s diary

【入門者向け】Pythonにおけるクラスの継承とオブジェクト指向|Python入門 #8 - lib-arts’s diary
次にPythonを使用する際によく用いるライブラリを見ていければということで、#11〜#13ではNumPyについて確認を行いました。

【入門者向け】NumPy①(概要と最低限知っておくと便利な機能)|Python入門 #11 - lib-arts’s diary

NumPyについては一区切りついたので、#14からは機械学習の簡単なアルゴリズムを組む際によく用いるライブラリであるscikit-learnについて取り扱っていきます。#14ではscikit-learnの概要と簡単な動作確認について行います。
以下目次になります。
1. scikit-learnの概要
2. scikit-learnの簡単な動作確認
3. まとめ


1. scikit-learnの概要
1節ではscikit-learnの概要についてまとめていきます。まずはWikipediaを確認していきます。

f:id:lib-arts:20191003165140p:plain

scikit-learn - Wikipedia

scikit-learnは、Pythonベースで実装されたOSS機械学習ライブラリで、SVMやRandom Forestなど様々なアルゴリズムが実装されているとされています。また、Python数値計算ライブラリであるNumPyやSciPyとやり取りを行うように設計されているとあり、以前の記事でも書いたようにNumPyやSciPyがベースになっている機能も確認できます。

もう少し概要について確認していきます。

f:id:lib-arts:20191003165733p:plain

上記では、scikit-learnの開発経緯などについてまとめられています。深層学習以外を行う際のライブラリとしてはまず最初に検討して、アルゴリズムがなければ他のライブラリを探すといった位置付けで考えておいても良いほど、実装されている機能が多岐に渡ります。

f:id:lib-arts:20191003170307p:plain

また、実装については、大部分がPythonで、いくつかのコア部分の実装が性能向上のためCythonで実装されているとされています。LIBSVMやLIBLINEARのCythonによるラッパーであるということについて把握しておけばscikit-learnの使い方を覚えるという意味合いでは十分だと思われます。

ここまでで大体の概要はつかめたため、1節はここまでとし、次の2節で簡単な動作確認を行なっていきます。

 

2. scikit-learnの簡単な動作確認
2節では簡単な動作確認について行なっていきます。

1.1. Generalized Linear Models — scikit-learn 0.21.3 documentation

簡単な例ということで上記を元に少し改変した線形回帰の例を用いて解説します。まずは下記を動かしてみましょう。

from sklearn import linear_model

reg = linear_model.LinearRegression()
reg.fit([[1], [2], [3]], [0, 1, 2])

print(reg.coef_)
print(reg.intercept_)

実行結果は下記のようになります。

f:id:lib-arts:20191003171301p:plain

regはsklearn.linear_model.LinearRegressionで実装されたクラスのインスタンスになります。このインスタンスのfitメソッドを用いることで、回帰分析の学習を行なっています。学習後にreg.coef_で係数、reg.intercept_で切片の情報を取り出すことができます。数字だけだとわかりづらいと思われるので下記で簡単に図式化しておきます。

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0,3.2,0.1)
y = x*reg.coef_[0]+reg.intercept_

plt.plot(x,y,color="green")
plt.scatter([1,2,3],[0,1,2])
plt.show()

実行結果は下記のようになります。

f:id:lib-arts:20191003171742p:plain

このようにscikit-learnを用いることで回帰分析はじめ様々な機械学習アルゴリズムを簡単に実装することができます。

上記までで簡単な動作確認ができたので2節はここまでとします。


3. まとめ
#14ではscikit-learnの概要と簡単な動作確認において行いました。
#15以降ではscikit-learnの主要な機能をいくつか確認していければと思います。