scikit-learn(サイキットラーン)とは、Pythonのオープンソース機械学習ライブラリです。機能が充実している高品質ライブラリです。

オープンソースのAI・人工知能/scikit-learnとは

scikit-learn(サイキットラーン)とは、Pythonのオープンソース機械学習ライブラリです。機能が充実している高品質ライブラリです。

scikit-learn(サイキットラーン)とは、Pythonのオープンソース機械学習ライブラリです。機能が充実している高品質ライブラリです。

目次

「scikit-learn」基本情報
・概要
・主な特徴
・同様製品
・導入事例
・ライセンス情報
・ダウンロード
・参考元サイト

ざっくりわかる「scikit-learn」
第1回 scikit-learnとは(入門編)
  ・参考サイト(1) オフィシャルサイト「scikit-learn Machine Learning in Python」
  ・参考サイト(2) Scikit-learnで機械学習入門(使い方)
  ・参考サイト(3) scikit-learn から学ぶ機械学習の手法の概要
第2回 scikit-learnのインストール
  ・オフィシャルサイト「Installing scikit-learn」
  ・Windows編(簡単に導入する方法)
  ・Windows編(Python 3.4/3.5 の場合)
  ・Docker編(各種Python用機械学習ライブラリ)
第3回 scikit-learnで使える学習アルゴリズム「SVM」とは
  ・「SVM」とは
  ・参考サイト(1) サポートベクターマシンとは
  ・参考サイト(2) サポートベクターマシン
  ・参考サイト(3) 機械学習とは何か? - 自分なりに説明+具体例:サポートベクターマシン-
  ・参考サイト(4) SVMについて整理してみた。
  ・参考サイト(5) サポートベクターマシン(SVM)
  ・参考サイト(6) SVMについて
第4回 scikit-learnで使える学習アルゴリズム「Random Forest」とは
  ・「RandomForest」とは
  ・参考サイト(1) ランダムフォレスト
  ・参考サイト(2) 決定木とランダムフォレスト
  ・参考サイト(3) 実務でRandomForestを使ったときに聞かれたこと
  ・参考サイト(4) 【Hivemall入門】RandomForestで毒キノコ推定モデルを作る
  ・参考サイト(5) Random Forest とその派生アルゴリズム
第5回 scikit-learnのPython実装事例
  ・参考サイト(1) 「主成分分析」「MDS」
  ・参考サイト(2) 「分類」「クラスタリング」「次元削減」
  ・参考サイト(3) 「今日なに着てく?」モック
  ・参考サイト(4) 「タイタニック号沈没事故」生存者推定分析

TOPに戻る

「scikit-learn」基本情報

概要

基本説明

scikit-learnは、Python実装の機械学習ライブラリです。

機械学習アルゴリズムを幅広くサポートしています。分類回帰クラスタ分析(ニューラルネットワーク、サポートベクターマシン、ランダムフォレスト、k近傍法など)を手軽に実装できます。

プロトタイピングとして開発しやすく、大量データを扱わない場合には、そのまま実用できる機能を提供します。

主な特徴

数値計算ライブラリ連携

他のPython数値計算ライブラリ(NumPy、SciPy、Pandas、Matplotlibなど)と連携しやすいように設計されています。

「NumPyで作成した行列を機械学習の入力データとして利用する」などの連携を行えます。

「分類」

ラベルとデータを学習し、対象データのラベル予測を行なう機能です。対象オブジェクトがどのカテゴリに属しているかを識別します。

「スパム検出」「画像認識」などの用途に向いています。

サポートアルゴリズム
・SVM(サポートベクトルマシン、線形サポートベクトルマシン)
・K近傍法
・ランダムフォレスト

「回帰」

回帰データを学習して、実数値を予測する機能です。オブジェクトに関連付けられた連続値の属性を予測します。

「薬物応答予測」「株価予測」などの領域に向いています。

サポートアルゴリズム
・回帰
・ラッソ回帰
・リッジ回帰
・SVR

「クラスタリング」

似ているデータをまとめてデータ構造を発見する機能です。類似オブジェクトセットに対する自動的グループ化を行います。

「顧客セグメンテーション」「実験結果のグループ化」などの領域に向いています。

サポートアルゴリズム
・クラスタ分析(Clustering)
・K平均法(KMeans)
・混合ガウス分布(GMM)
・平均変位法(MeanShift)

「次元削減」

データの次元を削減して、「主成分分析」「要因発見」「考慮するランダム変数の数を減らす」などを行う機能です。次段階の分析手法の事前データ処理としても使われます。

サポートアルゴリズム
・主成分分析(PCA)
・非負値行列因子分解(NMF)

「モデル選択」

パラメータとモデルの比較/検証/選択を行なう機能です。

「パラメータ調整による精度向上」などに利用します。

依存するライブラリ

scikit-learnは、次のライブラリに依存します。線形代数演算の事実上の標準技術です。
・BLAS(線形代数ライブラリの標準仕様)
・LAPACK(BLASを基礎として高度な線形代数計算)

同様製品

同様な機能を提供する製品として、次のようなものがあります。

オープンソース製品:「Caffe」「Theano」「Chainer​」など。

導入事例

「Evernote」などへの導入実績があります。

ライセンス情報

scikit-learnのライセンスは「BSD license」です。このライセンスに従うことを条件として、ソースコードの改変と公開が許可されています。

ダウンロード

ダウンロードページ

参考元サイト

・scikit-learn
・Wikipedia →scikit-learn
・Python でデータサイエンス →scikit-learn で機械学習
・Qiita →scikit-learn から学ぶ機械学習の手法の概要
・アルゴリズム速報 →Scikit-learnで機械学習入門(使い方)
・たけぞう瀕死ブログ →scikit-learnによる機械学習入門

TOPに戻る

ざっくりわかる「scikit-learn」

第1回 scikit-learnとは(入門編)

scikit-learnの概要について解説している参考サイトを紹介します。

参考サイト(1) オフィシャルサイト「scikit-learn Machine Learning in Python」

【ポイント】

scikit-learnのオフィシャルサイト(英語版)です。

機能解説、関連ニュース、コミュニティ情報、各種ドキュメントなどがまとめられています。

【テーマ】

・Classification
・Regression
・Clustering
・Dimensionality reduction
・Model selection
・Preprocessing
・News
・Community など

【ページリンク】

→scikit-learn

参考サイト(2) Scikit-learnで機械学習入門(使い方)

【ポイント】

「Python」+「Scikit-learn」で機械学習を行う方法についての入門者向け解説がまとめられています。

【テーマ】

・Scikit-learnとは
・Scikit-learnの使い方
・はじめに
・回帰
・クラスタ分析
・次元削減
・決定木分析
・サポートベクターマシン
・ニューラルネットワーク (0.1.8.0~使用可能)
・他ライブラリとの連携 など

【ページリンク】

→アルゴリズム速報 →Scikit-learnで機械学習入門(使い方)

参考サイト(3) scikit-learn から学ぶ機械学習の手法の概要
ポイント

「機械学習の基本的な手順」「scikit-learnの機能」「依存ライブラリ」などについて解説されています。

【テーマ】

・機械学習の基本的な手順
・手法の選択
・分類 (Classification)
・SVM (サポートベクトルマシン、線形サポートベクトルマシン)
・K 近傍法
・ランダムフォレスト
・回帰 (Regression)
・回帰
・ラッソ回帰
・リッジ回帰
・SVR
・クラスタリング
・K 平均法 (KMeans)
・混合ガウス分布 (GMM)
・平均変位法 (MeanShift)
・次元削減 (Dimensional Reduction)
・主成分分析 (PCA)
・非負値行列因子分解 (NMF)
・BLAS と LAPACK

【ページリンク】

→Qiita →scikit-learn から学ぶ機械学習の手法の概要

TOPに戻る

第2回 scikit-learnのインストール

Python実装のディープラーニングライブラリ「scikit-learn」を各環境にインストールする方法を紹介します。

オフィシャルサイト「Installing scikit-learn」

scikit-learnオフィシャルサイトのインストール解説(英語版)です。

「pip」や「conda」でのインストール方法について解説されています。

【テーマ】

・Installing the latest release
・Third-party Distributions
・Canopy and Anaconda for all supported platforms
・WinPython for Windows

【ページリンク】

→scikit-learn →Installing scikit-learn

Windows編(簡単に導入する方法)

WindowsのPython環境に機械学習ライブラリ「Scikit-learn」をインストールする方法について解説されています。

複数ある「簡単に導入する方法」を参照できます。

【テーマ】

・Scikit-learnとは
・Windows編(簡単に導入する方法)
・WinPythonのインストール方法
・Python(x,y)のインストール方法
・Anacondaのインストール方法
・Windows編(全部自分で導入する方法)
・Ubuntu(Linux)の場合
・Scikit-learnの使い方

【ページリンク】

→アルゴリズム速報 →【Scikit-learn】Pythonにインストールする方法

Windows編(Python 3.4/3.5 の場合)

WindowsのPython環境に「Scikit-learn」と「関連ツール/ライブラリなど」をインストールする方法について解説されています。

「Python 3.4 の場合」と「Python 3.5 の場合」での手順解説があり、それぞれのバージョンに適したインストール手順を参照できます。

【テーマ】

1. あらかじめ必要な whl ファイルをダウンロードする
・Python 3.4 の場合
・Python 3.5 の場合
2. 環境に必要なパッケージをインストールする
・前提
・Python 3.4 の場合の手順
・Python 3.5 の場合の手順
X. 動作確認
・SciPy
・scikit-learn

【ページリンク】

→適当に だらだらと 楽しく →Windows 上の Python に NumPy/Pandas/SciPy/scikit-learn をインストールする

Docker編(各種Python用機械学習ライブラリ)

「scikit-learn」が含まれるDockerイメージについて紹介されています。

「scikit-learn」のみではなく、「TensorFlow」「Chainer​」に加え、各種関連ツールも含まれています。

「Ubuntu 16.04」が対象となっているイメージです。

【含まれているライブラリ】

・tensorflow
・chainer
・scikit-learn
・gensim
・word2vec
・numpy
・pandas
・jupyter
・matplotlib
・mecab
・juman++
・その他依存ライブラリ など

【テーマ】

1 はじめに
2 インストールされているライブラリ
3 使い方
3.1 Pullとコンテナにログイン
3.2 Jupyter上でいろいろ試してみる
4 おわりに

【ページリンク】

→ズッキーニのプログラミング実験場 →[機械学習]各種Pythonライブラリ入りの実験用Dockerイメージを作った

TOPに戻る

第3回 scikit-learnで使える学習アルゴリズム「SVM」とは

学習アルゴリズム「サポートベクターマシン(SVM:Support Vector Machine)」の概要について紹介します。

「SVM」とは

「サポートベクターマシン(SVM:Support Vector Machine)」とは、機械学習方法の1手法です。

「教師あり学習」を用いるパターン認識モデルで、情報データ(画像/音声など)から、意味を持つ対象を選別して取り出すパターン認識を行えます。データを2つのグループに分類する問題に向いています。「分類」や「回帰」へ適用も可能です。

【高い識別精度】

SVMは、認識性能が優れている学習モデルです。未学習データに対して高い識別性能を得るための工夫がなされています。

【主なメリット】

・データ特徴の次元が大きい場合でも認識精度が高い
・最適化するべきパラメータ数が少ない
・パラメータ算出が容易
・局所解収束の問題がない
・「マージン最大化」が可能で汎化能力も高い
・コマンド一発で簡単に「分離する平面」を作成できる

【主なデメリット】

・学習データが増えると、計算量が膨大に増えてしまう
・多クラスの分類にそのまま適用できない

参考サイト(1) サポートベクターマシンとは

【ポイント】

「SVM」について、コンパクトに解説されています。

【ページリンク】

→AnalyticsNews →サポートベクターマシンとは

参考サイト(2) サポートベクターマシン

【ポイント】

「SVM」の概要についてまとめられています。

【テーマ】

1.基本的な考え方
2.概念的特長
3.線形分離不可能な問題への適用
4.構造化SVM

【ページリンク】

→Wikipedia →サポートベクターマシン

参考サイト(3) 機械学習とは何か? - 自分なりに説明+具体例:サポートベクターマシン-

【ポイント】

機械学習の話から始まり、サポートベクターマシンについて解説されています。

【テーマ】

・機械学習とは?
・代表例:サポートベクターマシン
・サポートベクターマシン(以下:SVM)とは?
・サポートベクターマシンを使うなら
・まとめ

【ページリンク】

→Hatena Blog →Data Science by R and Python →機械学習とは何か? - 自分なりに説明+具体例:サポートベクターマシン-

参考サイト(4) SVMについて整理してみた。

【ポイント】

「SVM」について、体系的に解説されています。

【テーマ】

1.SVMの概要
2.SVMという手法について
1). 線形SVM
2). 非線形SVM
3). ソフトマージンSVM
3.コンピュータ将棋でのSVMの活用

【ページリンク】

→Qiita →SVMについて整理してみた。

参考サイト(5) サポートベクターマシン(SVM)

【ポイント】

「SVM」について学術的に解説されています。

【テーマ】

・2クラスのパターン識別
・マージン最大化
・正例・負例の不等式による表現
・マージン最大の識別線の求め方
・ラグランジュの未定乗数(係数)法
・双対問題への変換
・双対問題の解から識別線を決定する
・N次元データへの拡張

【ページリンク】

→静岡理工科大学総合情報学部コンピュータシステム学科・知能インタラクション研究室 →ニューラルネットワーク →サポートベクターマシン(SVM)

参考サイト(6) SVMについて

【ポイント】

筑波技術大学大学院の方が、SVMについてまとめられたスライドです。

全51ページに渡って、SVMについて、詳しく解説されています。

【テーマ】

1.SVMの概要
2.線形SVMの理論と計算方法
3.その他のSVM
・ソフトマージンSVM
・非線形SVM
4.まとめ

【ページリンク】

→SlideShare →SVMについて

TOPに戻る

第4回 scikit-learnで使える学習アルゴリズム「Random Forest」とは

機械学習アルゴリズム「RandomForest」の概要について紹介します。

「RandomForest」とは

【概要】

「RandomForest」とは、機械学習方法の1手法で、「分類」「回帰」「クラスタリング」などに用いられます。

仕組みとしては「決定木」の1つで、集団学習アルゴリズムです。

大量の決定木を生成して、それぞれの決定木が出した答えの多数決を取り、最も数が多かったクラスに分類します。

大量の決定木を使用するため、「木が集まっている森(フォレスト、Forest)」というイメージになります。

【主なメリット】

・学習/評価が高速
・並列化可能(決定木の学習はそれぞれ完全に独立)
・多クラス識別が容易
・実装が比較的容易
・説明変数が多数で欠損していても対応可能(欠損値を許容)
・説明変数重要度(寄与度)を算出できる
・特徴のスケールや距離尺度に影響を受けない
・クロスバリデーションのような評価が可能(Out of Bagエラー計算)

【主なデメリット】

・説明変数の中で「意味のある変数」が「ノイズ変数」よりも極端に少ない場合にはうまく働かない

参考サイト(1) ランダムフォレスト

【ポイント】

「RandomForest」の概要についてまとめられています。

【テーマ】

・アルゴリズム
・学習
・評価
・特徴
・長所
・短所
・実装
・オープンソースによる実装
・商業実装

【ページリンク】

→Wikipedia →ランダムフォレスト

参考サイト(2) 決定木とランダムフォレスト

【ポイント】

「RandomForest」の基本である「決定木」の解説をベースにして、「RandomForest」について解説されています。

【テーマ】

・決定木とは
・ランダムフォレストとは
・やってみる(sklearnでの決定木)
・データ用意
・決定木をやってみる
・ランダムフォレストをやってみる
・ランダムフォレストで回帰をやってみる
・sklearnで実行

【ページリンク】

→Qiita →決定木とランダムフォレスト

参考サイト(3) 実務でRandomForestを使ったときに聞かれたこと

【ポイント】

「RandomForest」について実務的な視点から解説されています。

【テーマ】

・なぜRandomForestは精度が高くなるのか?
・baggingとの違いは何か?
・パラメータチューニングはどうすればよいか?
・実装

【ページリンク】

→Hatena::Diary →shakezoの日記 →実務でRandomForestを使ったときに聞かれたこと

参考サイト(4) 【Hivemall入門】RandomForestで毒キノコ推定モデルを作る

【ポイント】

「RandomForest」をHiveで実装する例が解説されています。

【テーマ】

1. RandomForestとは?
・まずは決定木から
・どうやって「条件」を取り出すか
・RandomForestは木が森になっただけです。
2. RandomForestで毒キノコ推定モデルを作る
・使うデータはmushroom
・Hiveで前処理
・ついにRandomForest!

【ページリンク】

→アドテクるびす界 →【Hivemall入門】RandomForestで毒キノコ推定モデルを作る

参考サイト(5) Random Forest とその派生アルゴリズム

【ポイント】

「RandomForest」の派生アルゴリズムと活用例について解説されています。

【テーマ】

・はじめに
・Random Forest
・基本的なアルゴリズム
・派生アルゴリズム
・Extremely Randomized Trees
・Alternating Decision Forests
・Random Ferns
・色々な使い方
・Depth 情報を使った姿勢推定
・画像の領域セグメンテーション
・キーポイントマッチング
・通常の単一カメラでの姿勢推定

【ページリンク】

→Hatena Blog →Sideswipe →Random Forest とその派生アルゴリズム

TOPに戻る

第5回 scikit-learnのPython実装事例

機械学習ライブラリ「scikit-learn」をPython実装した例を紹介します。

参考サイト(1) 「主成分分析」「MDS」

【ポイント】

「主成分分析」と「MDS」の基本的な実装例について解説されています。

【テーマ】

・主成分分析
・MDS
・オマケ

【ページリンク】

→長久手パラボラ日記 →Scikit-learnを使って主成分分析などを中心に遊んだ

参考サイト(2) 「分類」「クラスタリング」「次元削減」

【ポイント】

「分類」「クラスタリング」「次元削減」「顔認識」などのサンプルコードについて解説されています

【テーマ】

・データセット例の読み込み
・学習と予測
・分類
・k-近傍法による分類
・サポートベクターマシン (SVMs) での分類
・クラスタリング: 観測値をグループ分けする
・K平均クラスタリング
・主成分分析による次元削減
・まとめて: 顔認識
・Linear model: from regression to sparsity
・スパースモデル
・モデル選択: estimator とパラメータの選択
・グリッドサーチと交差検証 estimator

【ページリンク】

→Scipy Lecture Notes →3. パッケージとその応用 →3.6. scikit-learn: Python での機械学習

参考サイト(3) 「今日なに着てく?」モック

【ポイント】

機械学習で「今日なに着てく?」を教えてくれるモック開発に挑戦しているレポートです。

「今日の気温と降水確率」を入力すると、「過去の着たもの実績データ」から、「今日は何を着ていけばよいのか?」について提案をしてくれるものです。

【テーマ】

・データ
・100日分の「なにを着たか?」というデータ
・temperature:気温
・rainfall:降水確率
・outer:アウター(コート等)
・tops:トップ(上着)
・bottoms:ボトム(ズボン)
・推定するデータ
・でははじめに
・機械学習をさせてみる
・推定してみる
・分類の精度を検証する
・今後の課題

【ページリンク】

→KAYAC engineers' blog  →機械学習をつかって「今日なに着てく?」を教えてもらうためのモック

参考サイト(4) 「タイタニック号沈没事故」生存者推定分析

【ポイント】

タイタニック号沈没事故の乗客データから、「ジェンダーモデルによる生存者推定」「推定値評価」などの分析を行なう例について解説されています。

【テーマ】

1. バックグラウンド - タイタニック号沈没事故
2. ライブラリのインポートとデータの準備
3. ジェンダーモデルによる生存者推定、推定値の評価
・使用するデータの選択
・ジェンダーモデルによる推定
・推定値の評価
・テストデータから生存者を推定
・Kaggleに投稿するファイルの作成
4. ロジスティック回帰による生存者推定
・使用するデータの選択
・トレーニングデータの分割
・ロジスティック回帰による推定
・過学習(Overfitting)
5. 交差検証(クロスバリデーション)
・3つ以上の特徴量を使う
・One-hot Encoding
6. 決定木(Decision Tree)による生存者推定
7. グリッドサーチ

【ページリンク】

→PyData.Tokyo Tutorial & Hackathon #1 →チュートリアル第二部「Machine Learning」

TOPに戻る

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

scikit-learn最新TOPICS

最新情報はありません。

scikit-learn最新CLOSEUPコラム

  • オープソース書籍(サイド)
  • OSSNEWSに広告を掲載しませんか?

facebook

twitter