【GitHub】おすすめリポジトリの紹介⑩ scikit-learn-videos
本記事では「scikit-learn-videos」というGitHubリポジトリを紹介します。
Pythonには「scikit-learn」という機械学習ライブラリがありますが、そのライブラリについて使い方をわかりやすく解説している動画のチュートリアルが「scikit-learn-videos」です。
AIと機械学習とディープラーニングの関係
「scikit-learn」は機械学習ライブラリですが、「機械学習」という用語に関連するものに「AI」と「ディープラーニング」がありますので、それらの関係についてまず簡単に紹介します。
「AI」と「機械学習」と「ディープラーニング」の関係については下図がわかりやすいと思います。
AI(Artificial Intelligence)は、コンピューターが人間の知能を模倣できるようにする手法です。
機械学習(Machine Learning)は人工知能のサブセットであり、マシンが経験を用いてタスクを向上させることができる手法です。
ディープラーニング(Deep Learning)は人工ニューラルネットワークに基づく機械学習のサブセットです。
上図も含めてディープ ラーニングと機械学習の違いについては下記の記事で詳しく説明されています。
機械学習ライブラリのランキング
機械学習ライブラリにはいろいろなものがありますが、Kaggleというデータ分析のコンペティションで使用されている機械学習ライブラリのランキングがありますので紹介します。
下図はデータ分析ツールとしてメインに使用する機械学習ライブラリのランキングですが、scikit-learnは6位になっています。
下図はデータ分析ツールとして補助的な使用も含めた機械学習ライブラリのランキングですが、scikit-learnは1位になっています。
下記に上図の情報源のリンクを貼っておきます。
Titanicコンペティションでのscikit-learnの使用状況
KaggleにはTitanicコンペティションという非常に有名な入門用のコンペティションがあります。
下記にTitanicコンペティションのリンクを貼っておきます。
Titanicコンペティションのコードを「Most Votes」で並び替えたものが下図ですが、トップ3のコードでのscikit-learnの使用状況を確認してみます。
1位のコード
赤線箇所にあるようにscikit-learnが使用されていることがわかります。
2位のコード
赤線箇所にあるようにscikit-learnが使用されていることがわかります。
3位のコード
赤線箇所にあるようにscikit-learnが使用されていることがわかります。
以上のように、Kaggleではscikit-learnがよく使用されていることがわかります。
scikit-learnとは
scikit-learnはPythonの機械学習ライブラリですが、非常に多くの機械学習のアルゴリズムが実装されているだけではなく、評価のためのツールや実験用のデータセットなども含まれています。
下図がscikit-learnの公式サイトです。
下記にscikit-learnの公式サイトのリンクを貼っておきます。
scikit-learn-videosの紹介
下記の赤線箇所に記載されているように、scikit-learn-videosには10本の動画のチュートリアルがあり、合計時間が4時間半もあります。また、動画の内容はJupyter notebookというドキュメントでも確認することができます。
例えば下記の赤線の「video」をクリックします。
その結果、YouTube動画が再生されます。
例えば下記の赤線の「notebook」をクリックします。
その結果、Jupyter notebook(YouTube動画の内容と同じもの)が開きます。
ちなみに、10本の動画のチュートリアルのタイトルは下記のとおりです。
1.What is Machine Learning, and how does it work?
2.Setting up Python for Machine Learning: scikit-learn and Jupyter Notebook
3.Getting started in scikit-learn with the famous iris dataset
4.Training a Machine Learning model with scikit-learn
5.Comparing Machine Learning models in scikit-learn
6.Data science pipeline: pandas, seaborn, scikit-learn
7.Cross-validation for parameter tuning, model selection, and feature selection
8.Efficiently searching for optimal tuning parameters
9.Evaluating a classification model
10.Building a Machine Learning workflow
scikit-learn-videosへの行き方
scikit-learn-videosへの行き方ですが、検索を使うと便利です。
まず「data school github」というワードで検索すると、scikit-learn-videosを作られた「Kevin Markham」さんのGitHubリポジトリが見つかります。
「Kevin Markham」さんのGitHubリポジトリの赤線箇所をクリックするとscikit-learn-videosのリポジトリに行けます。
下記にscikit-learn-videosのリンクを貼っておきます。
scikit-learnのexamplesの紹介
scikit-learnのGitHubリポジトリにはexamplesというフォルダがあり、そこにはすぐに機械学習を体験できるコードが多く含まれています。
例えば「neighbors」の中には「plot_classification.py」というファイルがあります。
「plot_classification.py」では「アイリス」というデータセットと「KNeighborsClassifier」という機械学習アルゴリズムが使われています。
「アイリス」というデータセットと「KNeighborsClassifier」という機械学習アルゴリズムはscikit-learn-videosの中でも頻繁に使用されています。
scikit-learnのexamplesを動かしてみよう
Anadondaというデータ分析や機械学習に関連したライブラリやツールが予めインストールされているPythonのディストリビューションがありますので、まずはそれをインストールします。
Anacondaの公式サイトからAnaconda Individual Editionのインストーラーをダウンロードします。
インストールを開始します。
インストールが完了するとAnaconda Promptというものを使用することができるようになります。
下図がAnaconda Promptを起動したものですが、Anaconda Promptではpythonを使用することができます。
Anaconda Promptは普通のコマンドプロンプトと違って(base)というものが表示されています。
準備が整ったので、scikit-learnのexamplesを動かそうと思います。
コマンドプロンプトでgitを使ってscikit-learnのリポジトリをコピーします。
Anaconda Promptでneighbors配下に移動して「plot_classification.py」を実行します。
その結果、下記の2つのウィンドウが表示されます。
weightsパラメータがuniformの結果
weightsパラメータがdistanceの結果
下記は「plot_classification.py」のコード(コメント箇所削除)ですが、weightsパラメータをuniformとdistanceに設定して処理を行っていることがわかります。
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib.colors import ListedColormap
from sklearn import neighbors, datasets
n_neighbors = 15
iris = datasets.load_iris()
X = iris.data[:, :2]
y = iris.target
h = .02 # step size in the mesh
cmap_light = ListedColormap(['orange', 'cyan', 'cornflowerblue'])
cmap_bold = ['darkorange', 'c', 'darkblue']
for weights in ['uniform', 'distance']:
clf = neighbors.KNeighborsClassifier(n_neighbors, weights=weights)
clf.fit(X, y)
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, h),
np.arange(y_min, y_max, h))
Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.figure(figsize=(8, 6))
plt.contourf(xx, yy, Z, cmap=cmap_light)
sns.scatterplot(x=X[:, 0], y=X[:, 1], hue=iris.target_names[y],
palette=cmap_bold, alpha=1.0, edgecolor="black")
plt.xlim(xx.min(), xx.max())
plt.ylim(yy.min(), yy.max())
plt.title("3-Class classification (k = %i, weights = '%s')"
% (n_neighbors, weights))
plt.xlabel(iris.feature_names[0])
plt.ylabel(iris.feature_names[1])
plt.show()
以上、scikit-learnやscikit-learn-videosについて簡単に紹介しました。
機械学習やデータ分析に興味のある方はscikit-learn-videosはおすすめの学習教材だと思いますので一度チェックされてはいかがでしょう。