Scikit学習における分類モデル

5227 ワード

このポストは、Scikit Learningで利用できる異なった分類モデルのいくつかを通してあなたを歩きます.
第一に、分類アルゴリズムがどのようなものであり、どのように使用されるのかを理解することが重要です.分類アルゴリズムは、予め定められたカテゴリに他のデータを予測して、分類するモデルをつくるためにデータのトレーニングセットを取る.例えば、電話会社は、特定の顧客が次の暦年の間会社に固執する可能性があるかどうか決定するために販売、場所、等に関係する顧客データを取り入れるかもしれません.

k最近傍


何をするか
k最近傍は点間の距離を測定する分類アルゴリズムである.KNNはポイントをとって、トレーニングセットでK最寄りの点を測ります.次に、各ポイントのラベルを見て、それを囲むラベルの大多数で出発点を分類します.以下の例を見てください.

ここで、緑の点は出発点です、そして、我々は周囲の青と赤点を見ます.K = 3ならば、3つの最も近い点は2つの赤と1つの青です.このように、アルゴリズムは緑の点を赤い三角形と分類するでしょう.
コード
# Import KNeighborsClassifier
from sklearn.neighbors import KNeighborsClassifier

# Instantiate KNeighborsClassifier
knn = KNeighborsClassifier()

# Fit the classifier
classifier = knn.fit(scaled_data_train, y_train)

# Predict on the test set
test_preds = classifier.predict(scaled_data_test)

決定木


何をするか
決定木は、かなり単純に、出発点をとって、最終的に分類をするために分岐する複数の決定をします.以下の例を参照ください.

この特定の例は、人が異なる特性に応じて着用するコンタクトレンズの種類を決定しようとします.これらの木は貪欲な検索を使用します.そして、それは常に各々の分類(基準に応じてトレーニングデータを分類する最善の方法を選びます:エントロピー、情報利得、その他).
コード
from sklearn.tree import DecisionTreeClassifier 
clf = DecisionTreeClassifier(criterion='entropy')
clf.fit(X_train_ohe, y_train)

ランダムフォレスト


何をするか
ランダム森林分類器は、全く単純な複数の決定木です.通常、ブートストラッピングは、トレーニングデータのサブセットが交換でつくられるところに関係しています.この方法では、決定ツリーを作成するたびに、それは最後とは異なります.各ツリーは、ランダムな森林は、最終的な予測として集計の大多数を取る点を分類します.これは特異的な決定木よりも優れていますが、それは過フィットのより少ない可能性を持っているので、それはより多くのメモリを取り、より計算複雑です.
コード
from sklearn.ensemble import RandomForestClassifier

# n_estimators is how many trees in the forest
forest = RandomForestClassifier(n_estimators=100)
forest.fit(data_train, target_train)

モデルの評価方法


コード
print(confusion_matrix(y_test, pred))
print(classification_report(y_test, pred))
print("Testing Accuracy for Decision Tree Classifier: {:.4}%".format(accuracy_score(y_test, pred) * 100))
どういう意味
上記のコードは、次のようになります.

この方法を読みましょう.上部には2 x 2の混乱行列が見られる.右、上から下に行くと、これらの数字は真のネガティブ、偽陽性、偽陰性、真のポジショニングを表しています.他のメトリクスは、次の測定:正確な分類の割合は、正確な測定の割合は、実際に肯定的なリポジトリ、どのように実際のポジショニングの数が正しく分類されたリコールの措置の割合を測定し、F 1スコア精度とリコールのバランスを測定します.これらはあなたの分類モデルがどれだけ良いかを決定するために使用できるすべてのメトリックです.