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

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

Scikit-learnとは

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

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

解説動画

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

scikit-learn(サイキット・ラーン)とは、Pythonの機械学習モジュールです。

環境構築

回帰分析

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

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

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

決定木分析

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

クラスタ分析

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

階層型クラスタ分析

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

非階層型クラスタ分析

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

ニューラルネットワーク

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

応用例

時系列データの異常検知

時系列データの類似度

参考文献

関連ページ

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

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

西住技研をフォローする