Machine-learning-with-python-classification-algorithms-introduction

提供:Dev Guides
移動先:案内検索

分類アルゴリズム-はじめに

分類の概要

分類は、観測値または特定のデータポイントからクラスまたはカテゴリを予測するプロセスとして定義できます。 分類された出力は、「Black」、「White」、「spam」、「no spam」などの形式にすることができます。

数学的には、分類は入力変数(X)から出力変数(Y)へのマッピング関数(f)を近似するタスクです。 これは基本的に、入力データセットとともにターゲットも提供される教師付き機械学習に属します。

分類の問題の例として、電子メールのスパム検出があります。 出力には、「スパム」と「スパムなし」の2つのカテゴリしかありません。したがって、これはバイナリ型分類です。

この分類を実装するには、最初に分類子をトレーニングする必要があります。 この例では、「スパム」および「スパムなし」の電子メールがトレーニングデータとして使用されます。 分類器を正常にトレーニングした後、分類器を使用して未知の電子メールを検出できます。

分類における学習者の種類

分類問題にそれぞれに2種類の学習者がいます-

怠zyな学習者

名前が示すように、このような種類の学習者は、トレーニングデータを保存した後、テストデータが表示されるのを待ちます。 分類は、テストデータを取得した後にのみ行われます。 トレーニングに費やす時間は短くなりますが、予測に費やす時間は長くなります。 怠learnな学習者の例は、K最近傍とケースベースの推論です。

熱心な学習者

怠zyな学習者とは対照的に、熱心な学習者は、トレーニングデータを保存した後にテストデータが現れるのを待たずに分類モデルを構築します。 彼らはトレーニングにより多くの時間を費やしますが、予測にはより少ない時間を費やします。 熱心な学習者の例は、ディシジョンツリー、ナイーブベイズ、人工ニューラルネットワーク(ANN)です。

Pythonでの分類子の構築

機械学習用のPythonライブラリであるScikit-learnを使用して、Pythonで分類子を作成できます。 Pythonで分類子を構築するための手順は次のとおりです-

ステップ1:必要なPythonパッケージのインポート

scikit-learnを使用して分類子を作成するには、インポートする必要があります。 次のスクリプトを使用してインポートできます-

import sklearn
  • ステップ2:データセットのインポート *

必要なパッケージをインポートした後、分類予測モデルを構築するためのデータセットが必要です。 sklearnデータセットからインポートするか、要件に従って他のデータセットを使用できます。 sklearnの乳がんウィスコンシン診断データベースを使用します。 私たちは次のスクリプトの助けを借りてそれをインポートすることができます-

from sklearn.datasets import load_breast_cancer

次のスクリプトは、データセットをロードします。

data = load_breast_cancer()

また、データを整理する必要があり、それは次のスクリプトの助けを借りて行うことができます-

label_names = data['target_names']
labels = data['target']
feature_names = data['feature_names']
features = data['data']

次のコマンドは、データベースの場合、ラベルの名前、「悪性」および「良性」を出力します。

print(label_names)

上記のコマンドの出力は、ラベルの名前です-

['malignant' 'benign']

これらのラベルは、バイナリ値0および1にマップされます。* 悪性*がんは0で表され、*良性*がんは1で表されます。

これらのラベルの機能名と機能値は、次のコマンドの助けを借りて見ることができます-

print(feature_names[0])

上記のコマンドの出力は、ラベル0の機能の名前です。 *悪性*がん-

mean radius

同様に、ラベルの機能の名前は次のように生成することができます-

print(feature_names[1])

上記のコマンドの出力は、ラベル1の機能の名前です。 良性がん-

mean texture

私たちは次のコマンドの助けを借りてこれらのラベルの機能を印刷できます-

print(features[0])

これにより、次の出力が得られます-

[1.799e+01 1.038e+01 1.228e+02 1.001e+03 1.184e-01 2.776e-01 3.001e-01
 1.471e-01 2.419e-01 7.871e-02 1.095e+00 9.053e-01 8.589e+00 1.534e+02
 6.399e-03 4.904e-02 5.373e-02 1.587e-02 3.003e-02 6.193e-03 2.538e+01
 1.733e+01 1.846e+02 2.019e+03 1.622e-01 6.656e-01 7.119e-01 2.654e-01
 4.601e-01 1.189e-01]

私たちは次のコマンドの助けを借りてこれらのラベルの機能を印刷できます-

print(features[1])

これにより、次の出力が得られます-

[2.057e+01 1.777e+01 1.329e+02 1.326e+03 8.474e-02 7.864e-02 8.690e-02
7.017e-02  1.812e-01 5.667e-02 5.435e-01 7.339e-01 3.398e+00 7.408e+01
5.225e-03  1.308e-02 1.860e-02 1.340e-02 1.389e-02 3.532e-03 2.499e+01
2.341e+01  1.588e+02 1.956e+03 1.238e-01 1.866e-01 2.416e-01 1.860e-01
2.750e-01  8.902e-02]

ステップ3:データをトレーニングセットとテストセットに整理する

目に見えないデータでモデルをテストする必要があるため、データセットをトレーニングセットとテストセットの2つの部分に分割します。 sklearn pythonパッケージの_train_test_split()_関数を使用して、データをセットに分割できます。 次のコマンドは、関数をインポートします-

from sklearn.model_selection import train_test_split

次のコマンドは、データをトレーニングデータとテストデータに分割します。 この例では、テスト目的でデータの40%を使用し、トレーニング目的でデータの60%を使用しています-

train, test, train_labels, test_labels =
   train_test_split(features,labels,test_size = 0.40, random_state = 42)

ステップ4:モデル評価

データをトレーニングとテストに分割した後、モデルを構築する必要があります。 この目的のために、_NaïveBayes_アルゴリズムを使用します。 次のコマンドは、_GaussianNB_モジュールをインポートします-

from sklearn.naive_bayes import GaussianNB

今、次のようにモデルを初期化します-

gnb = GaussianNB()

次に、次のコマンドの助けを借りて、モデルを訓練することができます-

model = gnb.fit(train, train_labels)

次に、評価のために予測を行う必要があります。 次のようにpredict()関数を使用して行うことができます-

preds = gnb.predict(test)
print(preds)

これにより、次の出力が得られます-

[1 0 0 1 1 0 0 0 1 1 1 0 1 0 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0
 1 0 1 1 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0
 1 1 1 1 1 1 0 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 1 0 0 1 0 0 1 1 1 0 1 1 0
 1 1 0 0 0 1 1 1 0 0 1 1 0 1 0 0 1 1 0 0 0 1 1 1 0 1 1 0 0 1 0 1 1 0 1 0 0
 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 0 0
 0 1 1 0 1 0 1 1 1 1 0 1 1 0 1 1 1 0 1 0 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1
 0 0 1 1 0 1]

出力の上記の一連の0と1は、*悪性*および*良性*腫瘍クラスの予測値です。

ステップ5:精度を見つける

2つの配列、つまり_test_labels_と_preds_を比較することで、前のステップでモデルの構築の精度を見つけることができます。 _accuracy_score()_関数を使用して精度を判断します。

from sklearn.metrics import accuracy_score
print(accuracy_score(test_labels,preds))
0.951754385965

上記の出力は、_NaïveBayes_分類子の精度が95.17%であることを示しています。

分類評価指標

Machine Learningアプリケーションまたはモデルの実装を完了しても、ジョブは実行されません。 モデルがどれほど効果的かを知る必要がありますか? さまざまな評価指標が存在する場合がありますが、指標の選択は機械学習アルゴリズムのパフォーマンスの測定方法と比較方法に影響するため、慎重に選択する必要があります。

以下は、データセットと問題の種類に基づいて選択できる重要な分類評価指標の一部です-

混同マトリックス

  • link:/machine_learning_with_python/machine_learning_with_python_confusion_matrix [Confusion Matrix] -これは、出力が2種類以上のクラスである可能性がある分類問題のパフォーマンスを測定する最も簡単な方法です。

さまざまなML分類アルゴリズム

以下は、いくつかの重要なML分類アルゴリズムです-

  • ロジスティック回帰
  • サポートベクターマシン(SVM)
  • 決定木
  • ナイーブベイズ
  • ランダムフォレスト

これらすべての分類アルゴリズムについては、以降の章で詳しく説明します。

アプリケーション

分類アルゴリズムの最も重要なアプリケーションのいくつかは次のとおりです-

  • 音声認識
  • 手書き認識
  • 生体認証
  • 文書分類