【Scikit-learn超入門】使い方をサンプルコード付きで解説

Pythonライブラリ「Scikit-learn」で機械学習を行う方法を入門者向けに解説します。

Scikit-learnとは

Scikit-learn(読み:サイキットラーン)は、Pythonで機械学習を行うための代表的なライブラリです。シンプルで使いやすく、学習から実務まで幅広く活用されています。主な特徴は以下のとおり。

  • 幅広いアルゴリズムに対応
    • 線形回帰、SVM、ランダムフォレスト、k-NN、クラスタリング(k-meansなど)といった様々なアルゴリズムが利用できます。
  • データ構造が扱いやすい
    • NumPy配列やPandasデータフレームに対応しているため、他のライブラリとデータの受け渡しがしやすい
  • 学習コストが低い
    • シンプルかつ一貫性がある(「学習→予測→評価」の流れでAPIを呼び出して使用する)ため、直感的で使いやすいです。
    • 日本語の情報量も多く、公式ドキュメントや解説書なども充実しています。
  • 商用利用可能
    • BSDライセンスなので、条件を満たせば商用利用可能

本シリーズの方向性

「Scikit-learn」は学習コストが低いため、機械学習の数理的な理解がなくてもプログラムを動かすことは可能です。ただし、それは 「とりあえず使える」にすぎず、「数理を理解して使える」こととは大きな差があります。最初は難しく感じるかもしれませんが、数理的な理解が深まると「多様な問題を解決するための最適な使い方」ができるようになり、応用力が身につきます。

本シリーズでは「Scikit-learn」の使い方に加えて、各手法のコアとなる数理についても解説します。数理的理解の重要性については以下ページで詳細に解説していますので、ご参考ください。

【Scikit-learn】AI時代に数理的な理解を深める学習が重要な理由
Pythonライブラリ「Scikit-learn」で機械学習について学ぶ際、数理的な学習を併せて行うことがおすすめな理由について解説します。

動画で見る

本ページの内容は以下動画で解説しています。

必要な予備知識と環境構築

「機械学習」について1から学ぶ方は、Scikit-learnを使う前に、以下ページで最低限の予備知識を習得しましょう。

AIと機械学習の違いとは?モデルを構築するまでの基本的な流れを解説
AIと機械学習の違いとは?基本用語から種類・活用事例まで幅広く解説します。

また、「Scikit-learn」を使うには、「NumPy」「Pandas」「Matplotlib」といった定番ライブラリの基本操作を理解している必要があります。「まだ使ったことがない人」や「基本操作に不安がある人」は、以下ページや解説動画を参考に学習してみてください。

【NumPy入門】配列の基礎的な扱い方(ndarray)
Python言語とNumPyで配列を扱う際の基礎的な部分をソースコード付きで解説します。
【Pandas入門】使い方とサンプル集
Pythonモジュール「Pandas」でデータ分析する方法についてサンプルコード付きで入門者向けに解説します。
【Matplotlib超入門】使い方とサンプルコード集
Pythonモジュール「Matplotlib」でグラフを作成する方法をサンプルコード付きで入門者向けにまとめました。

「必要な予備知識は習得している人」や「予備知識など不要な猛者」は、以下ページに従ってScikit-learnの環境構築を行いましょう。

【Scikit-learn】インストールする方法(pip)
Pythonライブラリ「Scikit-learn」をパッケージ管理ツール「pip」でインストールする方法について解説します。

回帰分析

回帰分析では、「結果(目的変数)」と「結果に影響を及ぼすデータ(説明変数)」の関係性を統計的に求める手法です。2つのデータの関係性がわかれば、将来どのような結果となるかの予測を行うことができます。説明変数が1つの場合が「単回帰分析」、複数の場合は「重回帰分析」といいます。

サポートベクターマシン(SVM)

【特徴】予測対象:分類, 学習タイプ:教師あり, 可読性:○, 並列処理:✕
【概要】マージン最大化のアイデアにより、汎化性能が高い2分類を行います。計算コストは高めです。

決定木分析

【特徴】モデル:木構造(非線形), 学習タイプ:教師あり, 予測対象:分類, 可読性:○, 並列処理:✕
【概要】枝先で1つの説明変数と閾値のセットでにデータを2つに分けるのを繰り返します。説明変数の選択と閾値は、ジニ不純度やエントロピー等で決定されます。

クラスタ分析

特徴が類似するデータ同士をまとめて、データ構造を発見します。分類 (Classification)データとラベルを学習し、データに対するラベルを予測します。

階層型クラスタ分析

【特徴】予測対象:分類, 学習タイプ:教師なし, 可読性:○, 並列処理:✕
【概要】代表例はユークリッド距離*ウォード法。あらかじめ定義した距離を用いてデータをグループ化。クラスタ数(分類数)は、計算後に変更可能。

非階層型クラスタ分析

【特徴】予測対象:分類, 学習タイプ:教師なし, 可読性:✕, 並列処理:○
【概要】代表例はk平均法。クラスタ数(分類数)を事前に指定する必要がある(後から変更不可) 。階層型クラスタリングで高速化もできる。初期値によって結果が異なる等の問題あり。

ニューラルネットワーク

【特徴】モデル:神経回路, 学習タイプ:教師あり 予測対象: 連続値・分類, 可読性:✕, 並列処理:○
【概要】古典的な多層構造(入力・隠れ層・出力)のニューラルネットワーク。学習にはバックプロパゲーションを用いることが多い。複雑なモデルを構築できる反面、過学習も多い。

応用例

時系列データの異常検知

時系列データの類似度

参考文献

関連ページ

【Python超入門】使い方とサンプル集
Pythonの使い方について、基礎文法から応用例まで入門者向けに解説します。
この記事を書いた人
西住技研

プログラミング言語「Python」を研究、仕事、趣味でデータ分析や作業自動化などに活用してきたノウハウを情報発信しています。
筆者の詳しいプロフィールやお問合せはこちらのページまで。
YoutubeX(旧Twitter)でも情報発信中です!

西住技研をフォローする