見出し画像

【GitHub】おすすめリポジトリの紹介⑩ scikit-learn-videos

本記事では「scikit-learn-videos」というGitHubリポジトリを紹介します。

Pythonには「scikit-learn」という機械学習ライブラリがありますが、そのライブラリについて使い方をわかりやすく解説している動画のチュートリアルが「scikit-learn-videos」です。

AIと機械学習とディープラーニングの関係

「scikit-learn」は機械学習ライブラリですが、「機械学習」という用語に関連するものに「AI」と「ディープラーニング」がありますので、それらの関係についてまず簡単に紹介します。

「AI」と「機械学習」と「ディープラーニング」の関係については下図がわかりやすいと思います。

画像1

AI(Artificial Intelligence)は、コンピューターが人間の知能を模倣できるようにする手法です。

機械学習(Machine Learning)は人工知能のサブセットであり、マシンが経験を用いてタスクを向上させることができる手法です。

ディープラーニング(Deep Learning)は人工ニューラルネットワークに基づく機械学習のサブセットです。

上図も含めてディープ ラーニングと機械学習の違いについては下記の記事で詳しく説明されています。

機械学習ライブラリのランキング

機械学習ライブラリにはいろいろなものがありますが、Kaggleというデータ分析のコンペティションで使用されている機械学習ライブラリのランキングがありますので紹介します。

下図はデータ分析ツールとしてメインに使用する機械学習ライブラリのランキングですが、scikit-learnは6位になっています。

画像2

下図はデータ分析ツールとして補助的な使用も含めた機械学習ライブラリのランキングですが、scikit-learnは1位になっています。

画像3

下記に上図の情報源のリンクを貼っておきます。

Titanicコンペティションでのscikit-learnの使用状況

KaggleにはTitanicコンペティションという非常に有名な入門用のコンペティションがあります。

画像4

下記にTitanicコンペティションのリンクを貼っておきます。

Titanicコンペティションのコードを「Most Votes」で並び替えたものが下図ですが、トップ3のコードでのscikit-learnの使用状況を確認してみます。

画像5

1位のコード

赤線箇所にあるようにscikit-learnが使用されていることがわかります。

画像6

2位のコード

赤線箇所にあるようにscikit-learnが使用されていることがわかります。

画像7

3位のコード

赤線箇所にあるようにscikit-learnが使用されていることがわかります。

画像8

以上のように、Kaggleではscikit-learnがよく使用されていることがわかります。

scikit-learnとは

scikit-learnはPythonの機械学習ライブラリですが、非常に多くの機械学習のアルゴリズムが実装されているだけではなく、評価のためのツールや実験用のデータセットなども含まれています。

下図がscikit-learnの公式サイトです。

画像9

下記にscikit-learnの公式サイトのリンクを貼っておきます。

scikit-learn-videosの紹介

下記の赤線箇所に記載されているように、scikit-learn-videosには10本の動画のチュートリアルがあり、合計時間が4時間半もあります。また、動画の内容はJupyter notebookというドキュメントでも確認することができます。

画像12

例えば下記の赤線の「video」をクリックします。

画像13

その結果、YouTube動画が再生されます。

画像14

例えば下記の赤線の「notebook」をクリックします。

画像15

その結果、Jupyter notebook(YouTube動画の内容と同じもの)が開きます。

画像16

ちなみに、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リポジトリが見つかります。

画像26

「Kevin Markham」さんのGitHubリポジトリの赤線箇所をクリックするとscikit-learn-videosのリポジトリに行けます。

画像27

下記にscikit-learn-videosのリンクを貼っておきます。

scikit-learnのexamplesの紹介

scikit-learnのGitHubリポジトリにはexamplesというフォルダがあり、そこにはすぐに機械学習を体験できるコードが多く含まれています。

画像27

例えば「neighbors」の中には「plot_classification.py」というファイルがあります。

画像28

「plot_classification.py」では「アイリス」というデータセットと「KNeighborsClassifier」という機械学習アルゴリズムが使われています。

画像29

「アイリス」というデータセットと「KNeighborsClassifier」という機械学習アルゴリズムはscikit-learn-videosの中でも頻繁に使用されています。

scikit-learnのexamplesを動かしてみよう

Anadondaというデータ分析や機械学習に関連したライブラリやツールが予めインストールされているPythonのディストリビューションがありますので、まずはそれをインストールします。

Anacondaの公式サイトからAnaconda Individual Editionのインストーラーをダウンロードします。

画像17

インストールを開始します。

画像18

インストールが完了するとAnaconda Promptというものを使用することができるようになります。

下図がAnaconda Promptを起動したものですが、Anaconda Promptではpythonを使用することができます。

画像19

Anaconda Promptは普通のコマンドプロンプトと違って(base)というものが表示されています。

準備が整ったので、scikit-learnのexamplesを動かそうと思います。

コマンドプロンプトでgitを使ってscikit-learnのリポジトリをコピーします。

画像21

Anaconda Promptでneighbors配下に移動して「plot_classification.py」を実行します。

画像22

その結果、下記の2つのウィンドウが表示されます。

weightsパラメータがuniformの結果

画像23

weightsパラメータがdistanceの結果

画像24

下記は「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はおすすめの学習教材だと思いますので一度チェックされてはいかがでしょう。