【Python 入門】scikit-learn(sklearn)とは?初学者向けにわかりやすく解説!

【Python入門】 scikit-learn (sklearn) とは? 初学者向けにわかりやすく解説!

今回は初学者向けに scikit-learn についてと基本的な使い方をわかりやすく解説します!

scikit-learn とは?

scikit-learn は、Python で利用できるデータ分析や機械学習のためのライブラリの一つです。scikit-learn は、データの前処理や、機械学習のアルゴリズムを使った学習・予測、そしてモデルの評価など、データ分析や機械学習に必要な機能をひとまとめにしたパッケージです。

scikit-learn はとても使いやすく、多機能で人気のライブラリです。使い始めるのも手間がかからず、データの前処理から機械学習、評価までの一連の流れをスムーズに行うことができます。

scikit-learn の特徴

幅広いアルゴリズムのサポート

分類、回帰、クラスタリング、次元削減など、多岐にわたるタスクのためのアルゴリズムが提供されています。初学者から上級者まで、多様なニーズに応えることができます。

高い互換性

scikit-learn は、Python のデータ処理ライブラリである NumPy や Pandas との互換性が高く、これらのライブラリと組み合わせて効率的にデータ分析や機械学習を進められます。

無料・オープンソース

scikit-learn はオープンソースライブラリであり、無料で利用することができます。また、コードは公開されており、必要に応じて自分でカスタマイズすることも可能です。

scikit-learn を学ぶメリット

Python のライブラリである scikit-learn を学ぶことで、機械学習のコンセプトと実践の両方を効率的に学ぶことができます。以下にその具体的なメリットをいくつか紹介します!

1. 汎用性と豊富な機能

scikit-learn は、データ前処理、教師あり学習、教師なし学習、モデル選択、評価など、機械学習のさまざまなステップをサポートしています。これにより、機械学習のプロジェクト全体を一つのライブラリで管理することが可能になります。

2. 高品質なドキュメンテーションとコミュニティ

scikit-learn は、非常に充実したドキュメンテーションがあるのが特徴です。また、世界中に広がる大規模なコミュニティにより、問題が発生した際のサポートも得やすいです。これらにより、自己学習が進めやすいのがポイントです。

3. Python との相性

Python は、その読みやすさと書きやすさからデータサイエンス分野で広く採用されています。scikit-learn は Python で書かれており、Python の特性を生かした設計がなされています。そのため、Python と scikit-learn の組み合わせは、データ分析と機械学習でよく使われています。

scikit-learn のインストール

scikit-learn は Python のパッケージ管理ツールである pip を使って簡単にインストールできます。
Python の pip については以下の記事をご覧ください。

ターミナル(コマンドプロンプト)を開き、以下のコマンドを入力してみましょう。

<code>scikit-learn </code> のインストール
pip install -U scikit-learn

もし pip がインストールされていない場合や、更新が必要な場合は、まず pip のインストール・更新を行います。また、Python の環境管理ツールとして Anaconda を使用している場合は、次のコマンドで scikit-learn をインストールすることも可能です。

<code>Anacondaを使用している場合</code>
conda install scikit-learn

以上で、Python と scikit-learn の環境設定は完了です。これらのツールを使いこなして、データサイエンスにチャレンジしてみましょう!

scikit-learn でのデータ前処理

次に、実際のデータ分析で必要となるデータ前処理について見ていきましょう。前処理は分析の質を大きく左右します。scikit-learn は便利な前処理機能を提供しています。以下に、主要な前処理手法をいくつか紹介します。

データクリーニング

データクリーニングでは、欠損値の処理、異常値の検出、重複データの削除などを行います。これらは全て scikit-learn の機能で可能です。たとえば、欠損値の処理にはSimpleImputerクラスを使うことができます。これは平均値や中央値、最頻値などで欠損値を補完します。以下にその一例を示します。

<code><code>欠損値の処理の例</code></code>
from sklearn.impute import SimpleImputer

imputer = SimpleImputer(strategy="mean") # 平均値で欠損値を補完
imputed_data = imputer.fit_transform(data)

データ変換

データ変換では、特徴量のスケーリングや正規化を行います。これにより、データの範囲が一定の範囲に収まるようになります。scikit-learn ではStandardScalerクラスやMinMaxScalerクラスを使うことができます。これらは特徴量のスケーリングを手軽に行えます。以下にその一例を示します。

<code><code>特徴量のスケーリング</code></code>の例
from sklearn.preprocessing import StandardScaler

scaler = StandardScaler() # データを平均0、標準偏差1に変換
scaled_data = scaler.fit_transform(data)

特徴量選択

特徴量選択では、予測に重要な特徴量を選び出します。無関係または冗長な特徴量が多いと、モデルのパフォーマンスが低下する可能性があります。scikit-learnには、様々な特徴量選択の手法をサポートするクラスが用意されています。たとえば、SelectKBestクラスを使うと、特定の統計的テストでスコアリングされた上位 k 個の特徴量を選択することができます。以下にその一例を示します。

特徴量選択の例
from sklearn.feature_selection import SelectKBest, f_classif

selector = SelectKBest(score_func=f_classif, k=5) # ANOVA F-valueでスコアリングし上位5個の特徴量を選択
selected_data = selector.fit_transform(data, target)

これらのデータ前処理を実施することで、質の高いデータ分析が可能となります。scikit-learn はこれらの前処理機能を豊富に提供していますので、ぜひ積極的に活用してみてください。

Google Colab で scikit-learn を使ってみる

Google Colaboratory(通称:Colab)は、Google が提供するクラウド上の Jupyter ノートブック環境です。Python のコードをブラウザ上で書き、実行することができます。Google Colab は無料で使うことができ、一部の GPU も利用可能です。

Google Colab について詳しくは以下の記事をご覧ください!

Colab での scikit-learn の使用方法

scikit-learn は Colab の標準のランタイムにプリインストールされています。ですので、新たにインストールする必要はありません。scikit-learn を使う準備は、以下の一行のコードで行うことができます。

scikit-learnを使う準備
from sklearn import datasets

これで scikit-learn のデータセットモジュールがインポートされ、使用する準備が整いました。

例:アイリスデータセットのロードと可視化

scikit-learn のデータセットモジュールには、いくつかのお試しデータセットが含まれています。以下に、その一つであるアイリスデータセットをロードし、データを眺める簡単な例を示します。

アイリスデータセットのロードと可視化
# アイリスデータセットのロード
iris = datasets.load_iris()
print(iris.data.shape)  # データの形状を表示

Google Colab を使うことで、自分のパソコンに何もインストールせずに Python と scikit-learn を試すことができます。環境構築に時間を取られず実際に手を動かして学ぶことに時間を使えるのが大きなメリットです!ぜひ、Google Colab を活用して scikit-learn を学んでみてください。

具体例:アイリスデータセットでの分類

アイリスデータセットとは何か、そしてそれをどのように機械学習のモデルに適用するのかを詳しく解説します。今回使用する機械学習のアルゴリズムはロジスティック回帰というものです。これは非常にシンプルで理解しやすいアルゴリズムで、分類問題を解くためによく使われます。

1. データセットのロード

まずは、アイリスデータセットをロードします。アイリスデータセットは、3 種類のアイリスの花(Setosa, Versicolour, Virginica)について、そのがく片(sepal)と花弁(petal)の長さと幅を測定したデータセットです。

データセットのロード
from sklearn import datasets

iris = datasets.load_iris()
X = iris.data  # 特徴量
y = iris.target  # ターゲット変数(アイリスの種類)

ここで、Xは各アイリスのがく片と花弁の長さと幅のデータで、yはそのアイリスの種類(Setosa、Versicolour、Virginica)を表します。

2. データの分割

次に、データをトレーニング用とテスト用に分割します。これは、作ったモデルが未知のデータに対してどれだけ良い予測をするか、つまり、どれだけ「汎用性」があるかをチェックするためのステップです。

データの分割
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

このコードは、全データの 20% をテスト用、残りの 80% をトレーニング用にランダムに分割します。なお、random_stateパラメータはランダムに分割する際のシード値で、これによりランダムが再現可能になります。

3. モデルの訓練

データの準備ができたら、次はロジスティック回帰のモデルを訓練(学習)します。これは、「トレーニングデータを使って、アイリスの花の特徴からその種類を予測するルールを作る」というステップです。

モデルの訓練
from sklearn.linear_model import LogisticRegression

model = LogisticRegression(random_state=42)
model.fit(X_train, y_train)

ここでfit関数は、モデル(ここではLogisticRegression)をトレーニングデータに”フィット”させる、つまり学習するための関数です。

4. モデルの評価

モデルの訓練が終わったら、最後にそのモデルがどれだけ良い予測をするかを評価します。評価はテストデータを使って行います。

モデルの評価
from sklearn.metrics import accuracy_score

y_pred = model.predict(X_test)
print('Accuracy: ', accuracy_score(y_test, y_pred))

predict関数は、訓練済みのモデルを使って予測を行うための関数です。accuracy_scoreは予測結果の正確さ(どれだけ予測が当たっていたか)を計算する関数です。

5. モデルの利用

訓練が完了したモデルは、新しい未知のデータに対して予測を行うために利用することができます。具体的には、新たに観察したアイリスの花のがく片と花弁の長さと幅を測定したデータをモデルに入力し、その花の種類を予測することが可能です。

以下の Python コードは、その一連の流れを示しています。

モデルの利用
# 新しいアイリスの花のデータ(例:がく片の長さ5.0cm, 幅3.5cm, 花弁の長さ1.5cm, 幅0.2cm)
new_flower = [[5.0, 3.5, 1.5, 0.2]]

# モデルを使って種類を予測
prediction = model.predict(new_flower)

# 種類のリスト
iris_types = ['Setosa', 'Versicolour', 'Virginica']

# 結果の表示
print('Predicted class: ', iris_types[prediction[0]])

ここでは、新たなアイリスの花のデータ(new_flower)を作成し、訓練済みのモデル(model)を用いて予測を行っています。model.predict()は与えられたデータに対する予測結果を返します。そして、その予測結果が 0 ならば Setosa、1 ならば Versicolour、2 ならば Virginica と解釈します。
ぜひ上記の例では予測結果がどのアイリスの種類なのかあなたの Google Colab で試してみましょう!

このように、訓練済みのモデルを使って新しいデータの予測を行うことが可能です。注意点としてはモデルが訓練データに対して良好な性能を示したとしても、それが未知の新しいデータに対して同じ性能を維持するとは限らないことです。
モデルの性能評価と改善、そしてデータの前処理や特徴量選択などにも注意深く取り組みましょう!

まとめ

この記事では Python のライブラリである scikit-learn についてと基本的な使い方を紹介しました。Python は初学者でも扱いやすい言語で scikit-learn を使うと、データ前処理から機械学習まで効率よく進められます!

こちらの記事もオススメ

まずは無料で学びたい方・最速で学びたい方へ

まずは無料で学びたい方: Python&機械学習入門コースがおすすめ

Python&機械学習入門コース

AI・機械学習を学び始めるならまずはここから!経産省の Web サイトでも紹介されているわかりやすいと評判の Python&機械学習入門コースが無料で受けられます!
さらにステップアップした脱ブラックボックスコースや、IT パスポートをはじめとした資格取得を目指すコースもなんと無料です!

無料で学ぶ

最速で学びたい方:キカガクの長期コースがおすすめ

一生学び放題

続々と転職・キャリアアップに成功中!受講生ファーストのサポートが人気のポイントです!

AI・機械学習・データサイエンスといえばキカガク!
非常に需要が高まっている最先端スキルを「今のうちに」習得しませんか?

無料説明会を週 2 開催しています。毎月受講生の定員がございますので確認はお早めに!

説明会ではこんなことをお話します!
  • 国も企業も育成に力を入れている先端 IT 人材とは
  • キカガクの研修実績
  • 長期コースでの学び方、できるようになること
  • 料金・給付金について
  • 質疑応答