お問い合わせテクノロジーPythonで機械学習できるライブラリ「scikit-learn(sklearn)」とは【初級編】2021.04.10機械学習を始めようとしても、ゼロからコードを書いて開発するのは大変ですよね。そんな時に非常に強力なライブラリがscikit-learn(sklearn・サイキットラーン)です。scikit-learn(sklearn)は、回帰、分類に用いる様々なアルゴリズムを容易に実行できます。公式のWebサイトには非常に丁寧に解説が掲載されているため、初心者でもスムーズに習得できるでしょう。この記事では、scikit-learn(sklearn)とは何か、scikit-learn(sklearn)を使うための準備、scikit-learn(sklearn)を用いて機械学習を行う方法やポイントを紹介します。scikit-learn(sklearn)をマスターすれば、機械学習を搭載したシステムを開発できるようになるに違いありません。そこで今回は、scikit-learn(sklearn)のオーソドックスな使い方についてお伝えします。目次scikit-learn(sklearn・サイキットラーン)とはscikit-learn(sklearn)でできることscikit-learn(sklearn)を使うための準備scikit-learn(sklearn)の環境構築をする方法scikit-learn(sklearn)で機械学習を行う方法データの準備と前処理アルゴリズムの選択アルゴリズムの実装モデルの評価ハイパーパラメータの調整scikit-learn(sklearn)で機械学習をうまく行うためのポイントscikit-learn(sklearn・サイキットラーン)とはscikit-learn(sklearn)は、Pythonのオープンソース機械学習ライブラリのことです。Codeプロジェクトから開発が始まり、現在もscikit-learn(sklearn)は開発が継続しています。Toolkitの略でプログラミング数学、科学、工学のための数値解析ソフトウェアであるScipyのサードパーティ(標準のパッケージではなく企業など第三者が配布するパッケージ)です。Toolkitのなかで最も広く使われているものの1つです。実際にscikit-learn(sklearn)を使った身近なサービスでは、ノートを取るように情報を蓄積するサービスのEvernoteや学術論文の管理とオンラインでの情報共有行うMendeleyなどがあります。従来の機械学習ライブラリでは0からコードを書かないといけなかったのですが、scikit-learn(sklearn)は、機械学習のアルゴリズムが豊富に搭載されているだけでなく、機械学習を行うためのサンプルのデータセットも搭載されているため、インストールするとすぐに機械学習ができる点が特徴です。機械学習においてどのアルゴリズムを選択するべきかを決定することは初心者にとっては難解ですよね。scikit-learn(sklearn)はデータ数や行いたいことに基づいて適切なアルゴリズムを選択できるチートシートが用意されています。そのため、初心者でもすぐに機械学習を始められるでしょう。scikit-learn(sklearn)でできることscikit-learn(sklearn)は、分類、回帰、クラスタリング、次元削減、モデルの選択と評価、データの前処理の6つのことができます。分類と回帰は教師ありの学習の手法です。教師あり学習では、一部の正解データを基に学習をして未知のデータに対して予測を行います。分類は離散値を予想し、回帰は、連続値を予測します。ランダムフォレスト、サポートベクターマシンなどのアルゴリズムやニューラルネットワークを用いた深層学習も搭載されています。クラスタリングと次元削減は教師なし学習の手法です。クラスタリングとはデータを似た者同士でグループ分けする手法のことで、scikit-learn(sklearn)では、非階層的クラスタリングの代表的な手法であるk-meansなどを容易に実装できます。次元削減は、読んで字のごとく次元を下げる処理のことで、変数の数を減らすこと。次元削減によって、質の悪いデータの排除により精度が上がったり、計算コストが下がるというメリットがあります。scikit-learn(sklearn)では、主成分分析や因子分析などを実装できます。モデルの選択と評価は、機械学習の様々なモデルに対して正しく評価を行って選択をするための機能です。scikit-learn(sklearn)では分類モデルの評価を行うための正解率(Accuracy)、精度(Precision)やF値などの値を容易に計算するメソッドが用意されています。機械学習における学習が正しく行えていたのかを評価する際に利用します。searchなどのメソッドが準備されているため、モデルの評価やハイパーパラメータの調整を簡単に実装できます。次に、scikit-learn(sklearn)ための準備をご紹介しましょう。scikit-learn(sklearn)を使うためには、Pythonをインストールする必要があります。3.x.x(x.xは最新のバージョンが表示されます。)という表示があります。ご自身のOSに応じたインストーラーをダウンロードしてください。ダウンロードしたインストーラをダブルクリックすると、インストールが開始します。指示に従って、インストールを完了させてください。必要に応じて環境変数を設定すれば、scikit-learn(sklearn)を使うための準備は完了です。scikit-learn(sklearn)の環境構築をする方法それでは、scikit-learn(sklearn)を実際にインストールする方法を紹介します。scikit-learnと入力することでscikit-learn(sklearn)をインストールできます。skleranprint(sklearn.__version__)を実行してバージョンが表示されると、インストールができていることが確認できます。scikit-learn(sklearn)で機械学習を行う方法scikit-learn(sklearn)の環境構築が完了したので、scikit-learn(sklearn)で機械学習を行う方法をご紹介します。機械学習を行うためのステップとしては、データの準備と前処理、アルゴリズムの選択、アルゴリズムの実装、モデルの評価、ハイパーパラメータの調整の5ステップがあります。データの準備と前処理データをご自身で準備する必要がありますが、最初に機械学習を学ぶ場合、scikit-learn(sklearn)に搭載されているデータを利用するとよいでしょう。load_iris()などで、代表的なデータセットをダウンロードできます。scikit-learn(sklearn)の公式ページでどのようなデータがあるか確認してみましょう。(今回はアヤメの分類問題のデータセットで、以下このデータセットを使って説明します)また、変数が複数あり、変数によって単位が違っていたりする場合に、各変数の関係をわかりやすくするために有効なデータの標準化や正規化があります。MinMaxScaler([-1,1])などで行います。アルゴリズムの選択データが準備できたらアルゴリズムの選択です。scikit-learn(sklearn)のチートシートに基づいて、アルゴリズムを決定しましょう。今回のアヤメのデータセットの例ですと、サンプル数は50以上で、カテゴリを予測します。ラベル付きのデータがあり、データ数は100000例以下で、データはテキストではないので、KNeighborsClassifierをまずは実装しましょう。今回は、がくの長さ、がくの幅、花弁の長さ、花弁の幅のデータから、セトナかバーシクルかバージニカかを予測するモデルを作ります。#アヤメの種類を目的変数とする今回は、がくの長さ、がくの幅、花弁の長さ、花弁の幅は単位などが大きく違わないため、正規化や標準化は行わず、実装します。scikit-learn(sklearn)からKNeighborsClassifierのアルゴリズムをimpotします。そのうえで、学習用データと検証用データにデータを分けます。学習および予測を行いましょう。予測が終わると、実際に、モデルの予測はどれくらいの精度だったのかを検証します。Y_pred))を行うとどれくらいの精度だったのか、が検証できます。今回、n_neighborsの数がハイパーパラメータとなりますので、n_neighborsを様々変更して、どの値がよいかを検討する必要があります。今回の例ですと1~89の間でn_neighborsを調整して、精度について検証を行います。Y_pred))出力を見て、精度を確認が最もよい精度のハイパーラメータ(今回はkの値)を採用して、予測を再度行ってみましょう。scikit-learn(sklearn)で機械学習をうまく行うためのポイント最後に、scikit-learn(sklearn)で機械学習をうまく行うためのポイントを紹介します。ポイントは、「適切なアルゴリズムを選択すること」と「データの前処理を行うこと」です。scikit-learn(sklearn)は、機械学習のアルゴリズムを容易に実装できますが、適切なアルゴリズムを選択できていないと予測される結果は想定より悪いものとなってしまいます。scikit-learn(sklearn)のチートシートに基づいて、適切なアルゴリズムを選択することを心がけましょう。「データの前処理を行うこと」は非常に重要です。前処理とは、データをきれいにした状態で機械学習を行うことです。データに欠損値や外れ値があると、適切に学習が行われません。欠損値や外れ値がある場合は、データから除外して機械学習を行うとよいでしょう。今回はscikit-learn(sklearn)のオーソドックスな使い方についてお伝えしました。scikit-learnでできるscikit-learn(sklearn)で機械学習を行うためのステップとしては、データの準備と前処理、アルゴリズムの選択、アルゴリズムの実装、モデルの評価、ハイパーパラメータの調整の5ステップがあるscikit-learn(sklearn)で機械学習をうまく行うためのポイントは、「適切なアルゴリズムを選択する」と「データの前処理を行う」など、scikit-learn(sklearn)で何ができてどのように実装するのかをお伝えしました。この記事を読んで、scikit-learn(sklearn)を使った機械学習を始めましょう。おいて期待を上回り、徹底的な顧客志向で小規模から大規模ソリューションまで幅広く対応しています。御社の悩みを強みに変える仕組みづくりのお手伝いを致しますので、ぜひご相談ください。Web開発者に転身後、makegirlsというAIで可愛い子自動生成するサービスを見てAIに興味を持ち、現在お多福ラボにてAI開発者として働いています。システム開発経験は15年で、メインフレーム、Web開発、AI開発と幅広い経験と知識を元に、AIZINEの記事のレビューを担当。趣味はゲームのインドア派アラフォー。機械学習にすぐに使える!時系列データとその分析方法とは2021.10.302021.10.30人気記事ランキング人気記事は見つかりませんでした。検索トップタイトルとURLをコピーしました。