Pythonはデータ分析・AI開発において、多様なライブラリ・フレームワークに対応しており、注目を集めているプログラミング言語です。
とくにpythonとデータ分析は相性がよく、ライブラリを活用することで、数十行程度のシンプルなコードで高度なデータ分析が実現できます。
中でも、scikit-learnは機械学習を行うライブラリ。豊富なアルゴリズムを使ってモデル構築ができるので、データ分析や機械学習でよく活用されています。
とはいえ、世の中にはscikit-learnの学習教材が溢れており、何をどのような本で学習を始めてよいか迷っている方もいらっしゃるのではないでしょうか?
そこで本記事では現役データサイエンティストとして日々データ分析に携わっている経験をもとに、scikit-learnを学習する際のおすすめの参考書を詳しく解説をしていきます。
監修者
經田 原弘
東京大学大学院新領域創成科学研究科複雑理工学専攻修了。大学時代は3次元の医療データの平滑化処理を研究テーマとし、大学院時代はJAXAと協業し、月探査機かぐやの衛星データから、月面上の水の存否について調査していた。新卒では株式会社リクルートにてレコメンドシステムの開発等に従事し、現在は製造業系スタートアップにてデータサイエンティストとして勤務。応用情報技術者試験・E資格合格者。
scikit-learnとは?
scikit-learnとはどのようなライブラリで、どのような場面で活用されているのかの確認から始めていきましょう。はじめにPythonを使ったデータ分析・機械学習で使われる重要なライブラリを見ていきましょう。
中でも、scikit-learn(サイキット・ラーン)はPythonで機械学習を行うためのアルゴリズムが豊富にあるライブラリで、Pythonのデータ分析でもよく活用されるライブラリのひとつです。
ライブラリ | 機能 |
---|---|
scikit-learn | 機械学習のモデル構築や評価、データの前処理などを行う |
pandas | データ処理においてデータの操作、加工、集計、可視化などを行う |
Numpy | 数値計算において高速で効率的な配列処理を行う |
Matplotlib | さまざまなグラフを描画を行う |
とくに、scikit-learnはデータ分析や機械学習に欠かせない分類・回帰・クラスタリング・次元削減・データの前処理の5つを行うためによく活用されています。たとえば、以下のようなことができるようになります。
できること | できることの具体例 | 活用場面 |
---|---|---|
分類 | SVM・決定木・ランダムフォレスト K近傍法・ロジスティック回帰 | スパムメールの分類 画像認識 医療診断 |
回帰 | 線形回帰・Ridge回帰 Lasso回帰・ランダムフォレスト回帰 | 土地価格の予測 株価予測 |
次元削減 | PCA・t-SNE・LDA | 圧縮 特徴量抽出 高次元データの可視化 |
クラスタリング | K-means・階層的クラスタリング・DBSCAN | 顧客セグメンテーション 画像セグメンテーション |
データの前処理 | 欠損値の処理・スケーリング 正規化・特徴量エンコーディング | データの品質を向上 機械学習アルゴリズムの精度の向上 |
さらに、scikit-learnはほかのライブラリと組み合わせて使用することで、高度なモデル構築や効率的なエンコーディングを行うことができるので、多くのデータサイエンティストがscikit-learnを活用しています。
編集部では他にもpandasやNumpyなど、主要なライブラリの学習に使える参考書を紹介しています。興味のある方は下記からご覧ください。
scikit-learnを学習する参考書の選び方
scikit-learnを学べる本は非常に多く出版されています。
自分に適した参考書を見つけるために、「選び方」を確認しておきましょう。まずは参考書を選ぶ際に必ずチェックしておきたい「3つのポイント」をご紹介します。
- 自分のレベルに合った内容かどうか
- ほかの代表的なライブラリとの連携についても学べる
- 豊富な種類のアルゴリズムを学習できる
ポイント①:自分のレベルに合った内容かどうか
scikit-learnの学習本は数多くあり、超入門レベルから専門技術書レベルまでさまざまな本が売られています。
初学者向けと謳いながらも、高度なアルゴリズムの知識を要したり、専門的な説明が多い本もあり、自身のレベルと参考書のレベルとマッチしているかをよく吟味する必要があります。
自身のscikit-learnスキルを判断するヒントとして、編集部ではscikit-learnスキルを3段階に分けた表を作成しました。
scikit-learnのレベルとスキルセット
レベル | できること |
---|---|
初級レベル | ・データの読み込み、前処理、可視化 ・モデルのハイパーパラメータの調整方法(GridSearchCV、RandomizedSearchCVなど) ・標準的な機械学習モデルの実装と評価(線形回帰、ロジスティック回帰、決定木、ランダムフォレスト、 k-NN、SVM、k-meansなど) |
中級レベル | ・モデルのアンサンブル学習の実装(バギング、ブースティング、スタッキングなど) ・特徴量エンジニアリングの実装(カテゴリカル特徴量のエンコーディング、テキストデータの処理など) ・モデルの実装(ニューラルネットワーク、畳み込みニューラルネットワーク、RNN、LSTM、GAN、 オートエンコーダーなど) |
上級レベル | ・非線形次元削減の実装(t-SNE、UMAPなど) ・時系列データの処理と予測(ARIMA、SARIMAX、LSTMなど) ・カーネル法を用いた高次元データの処理(SVM、KernelPCAなど) ・高度なモデルの実装(ガウス過程モデル、深層強化学習、グラフニューラルネットワークなど) |
自身のscikit-learnレベルを確認しながら、ひとつひとつを正しい順番で段階的に学んでいくと学習効率がよくなることが期待できます。
たとえば、初学者は簡単なモデルの実装やパラメータの調整方法などscikit-learnの基礎知識を中心に学習します。一方、上級者向けの参考書では、カーネル法を用いた特徴量計算や非線形次元削減の実装など高度な機械学習の処理を学習できます。
初学者でモデルの実装方法などで学習が止まっている方はまずはロジスティック回帰やランダムフォレストなど基本的なモデルの実装から学習から始めたほうが効率の良い学習になるでしょう。
まずは上記表を参考に現在のscikit-learnスキルを把握して、適切なレベルの参考書を選びましょう。
ポイント②:ほかの代表的なライブラリとの連携についても学べる
scikit-learnはほかのライブラリと組み合わせることで、効率的でより高度なモデル構築できるようになります。
たとえば、scikit-learnをほかのライブラリと連携すると以下のようなことができます。
ライブラリ | scikit-learnと連携してできること |
---|---|
Pandas | Pandasを使って読み込んだデータをscikit-learnのデータ前処理ツールを使って、 欠損値の処理、特徴量のスケーリングなどを実行する |
matplotlib | scikit-learnの機械学習モデルをMatplotlibを使って可視化することで、 モデルの決定境界を直感的に理解する |
TensorFlow PyTorch | (TensorFlowやPyTorchは、ディープラーニングのためのライブラリ) TensorFlowやPyTorchを組み合わせることで、より高度な予測モデルを構築することができる |
NLTK SpaCy | NLTKやSpaCyを使ってテキストデータを前処理し、scikit-learnの特徴量抽出ツールを使って、 テキスト分類モデルを構築できる |
それぞれのライブラリは異なる分野に特化しており、組み合わせて使うことで機械学習をより効果的に処理することができます。
そのため、ほかのライブラリとの連携を学べる参考書を選ぶことは重要なポイントといえます。
ポイント③:豊富な種類のアルゴリズムを学習できる
scikit-learnには線形モデルやサポートベクターマシンなど機械学習のためのアルゴリズムが豊富に備わっています。
これらのアルゴリズムにより、データの学習結果から新たな入力に対する数値を予測する「回帰」や、ラベルを予測する「分類」などの仕組みが実現できます。
たとえば、代表的なアルゴリズムとその活用例を見てみましょう。
アルゴリズム | その活用例 |
---|---|
線形回帰 (Linear Regression) | 連続した数値データの予測に使用されます。 たとえば、不動産価格予測や株価予測などに応用できます。 |
主成分分析 (Principal Component Analysis) | 次元削減に使用されます。 たとえば、顧客データの可視化などに応用できます。 |
k-meansクラスタリング (k-means Clustering) | 非監視学習のクラスタリングに使用されます。 たとえば、顧客セグメンテーションなどに応用できます。 |
ニューラルネットワーク (Neural Networks) | 分類や回帰問題に使用されます。 たとえば、画像認識や音声認識などに応用できます。 |
このようにアルゴリズムによってできることが違うので、機械学習においてどのアルゴリズムを選択するべきかを決定することは初学者にとっては難解でしょう。
そのため、多くのアルゴリズムを学び、どのアルゴリズムがどのような機能を持っているのか、ひとつひとつ学習することが重要になります。
scikit-learnを学習するおすすめ参考書6選
ここからは編集部が厳選したscikit-learnを学べる良書を紹介していきます。
【scikit-learn学習前の基礎固めにおすすめ】Pythonスタートブック
Python初学者がいきなりscikit-learnの学習を始めると専門用語も多く、つまずく場合もあるかもしれません。
Pythonの基礎知識に不安のある方は本書でPythonの基礎固めをしましょう。
本書はPythonの特徴や活用方法の説明にはじまり、データ構造や条件分岐など、Pythonでプログラム作成するための必須知識まで順序立てて体系的に学ぶことができます。
体系的に学ぶことで、ひとつひとつの知識を関連付けて学べるので、学習内容が頭に残りやすくなります。そのため、scikit-learnの学習に進んだとき、Pythonの基礎知識で手戻りせずに学習を進めることができます。
【おすすめ】Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎
本書はscikit-learnを使った機械学習の基礎から、「特徴量エンジニアリング」と「モデルの評価と改善」などの応用までを網羅的に学ぶことができるので、scikit-learn初学者におすすめの一冊です。
「特徴量エンジニアリング」と「モデルの評価と改善」は精度の高い予測モデルを構築する上で重要となるので、データサイエンティストを目指す方に必要不可欠な知識を本書で学習できます。
また、Numpyやmatplotlibなどほかのライブラリと組み合わせてscikit-learnを活用する方法を解説しているので、効率的な機械学習の実行方法も学習できます。
ただ、Pythonの基本知識やNumpyやmatplotlibなどの解説は少ないため、Python・Numpy・matplotlibの基本知識を付けてから学習をする方がよいでしょう。
【おすすめ】Python機械学習ライブラリ scikit-learn活用レシピ80+
本書は分析目的から探せるレシピ本として、scikit-learnの活用方法を約80個紹介しており、実務でのscikit-learnの活用パターンを本書一冊でマスターすることができます。
データの前処理、次元削減、線形モデルなど基本知識からはじまり、サポートベクターマシン(SVM)、アンサンブル学習、ニューラルネットワークといった機械学習の応用に欠かせない知識まで幅広く学習できます。
データセットをpandasで可視化する方法や Numpyとmatplotlibを使ってプロットする方法など、ほかのライブラリと組み合わせる方法も学習できるので、機械学習の効率化も実現できます。
本書のように問題演習ベースでscikit-learnを学習できる参考書は少ないので、手を動かしながら学習したい方には非常におすすめです。
ただ、Pythonの基本文法やデータ分析の基本知識を必要とする解説も多いため、Pythonとデータ分析の基本知識を有している方におすすめです。
【おすすめ】Pythonデータサイエンスハンドブック ―Jupyter、Numpy、pandas、Matplotlib、scikit-learnを使ったデータ分析、機械学習
本書はPythonのデータ分析と機械学習を行うための4つの重要ライブラリを中心に解説しているので、Pythonでデータ分析・機械学習の基礎知識を幅広く学習したい方に非常におすすめです。
Numpy、pandas、Matplotlibの基礎を学びつつ、scikit-learnについてもガウス混合モデルやカーネル密度推定といった機械学習の応用部分も学べるので、ほかのライブラリと知識を結び付けながら学習できます。
また、プログラムの解説にはJupyter Notebookを使用しており、読者が手軽に実行環境を構築できるようになっているので、実際に手を動かしながらの学習に最適です。
scikit-learn データ分析 実践ハンドブック (Pythonライブラリ定番セレクション)
本書はほかの参考書とは異なり、数式でアルゴリズムを解説しているので、ハイパーパラメータと数式の関係がわかりやすく、本質からアルゴリズムを学習することができます。
また、学習内容も線回帰やSVMにはじまり、カーネル主成分分析やベイズ版混合ガウスモデルといった機械学習の応用部分も学べるので、本書1冊で機械学習を網羅的に学ぶことができます。
さらに、実際に使われるデータを用いた問題演習が豊富にあるため、手を動かしながら学びたい方におすすめです。
ただ、Pythonの基本文法や数学・統計学の基本知識を必要とする解説も多いため、Pythonや数学・統計学の基礎知識を有していると、手戻りなく学習を進めることができるでしょう。
scikit-learn、Keras、TensorFlowによる実践機械学習 第2版
scikit-learnを使った機械学習とKeras、TensorFlowを使った深層学習を学ぶことができるので、機械学習と深層学習を結び付けて学習したい方に非常におすすめです。
機械学習と深層学習を結び付けて学習すると理解が深まりやすいので、AI開発を行いたい方には大きなメリットになるでしょう。
また、すべてのコードがGitHub上で公開されており、Jupyter Notebookを使って手を動かしながら学ぶことができます。
ただ、本書は専門的な内容を多く含むので、Pythonの基本知識に加え、データ分析、機械学習の基礎を抑えている方が読むと、手戻りなく学習を進めることができるでしょう。
まとめ
scikit-learnを学習する参考書の選び方のポイントやおすすめ参考書を紹介してきました。自分に合った参考書は見つかったでしょうか。
scikit-learnは機会学習に欠かせないライブラリなので、データサイエンティストを目指す方にscikit-learnの学習は非常に有益です。本記事が学習を始めるきっかけになれば幸いです。
編集部ではPythonに関連する記事も公開しています。Pythonに興味のある方はぜひこちらの記事もご覧ください。