AI資格ドリル
資格を選ぶ

用語比較

predictとpredict_probaの違い|クラスのラベルと確率(Python3データ分析)

predict はクラスのラベルを予測します。確率の推定値を各クラスぶん出すのは predict_proba です。

ラベルだけで足りるか、確率まで必要かで選びます。確率の列がどのクラスかは、classes_ で確かめます。

この記事の根拠と出典

各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。

predictとpredict_probaの要点

predict

公式の説明は「X のサンプルについて、クラスのラベルを予測する」。1サンプルにつき1つのラベルを返す。

predict_proba

公式の説明は「確率の推定値」。すべてのクラスについての推定値が、クラスのラベルの順に並ぶ。

違いを表で確認

比較軸predictpredict_proba
返すもの予測したクラスのラベル各クラスの確率の推定値
配列の形(n_samples,) の1次元(n_samples, n_classes) の2次元
列の並び列はない。ラベルそのものが入るクラスのラベルの順。モデルの classes_ の順と同じ
多クラスの場合ラベルを1つ返すLogisticRegression の公式は、多クラス(multinomial)の問題では softmax 関数で各クラスの確率を求めると説明している

Python3エンジニア認定データ分析試験の学習に使う書籍(Amazon)

PR

ほかの資格を含む参考書・問題集の一覧を見る

どこで迷っているかを切り分ける

01

予測したクラスだけを、結果の表に入れたい人

predict を使います。1次元のラベルの配列が返り、そのまま列として追加できます。

02

確率の高い順に並べたり、自信の低い予測を選別したりしたい人

predict_proba を使います。各クラスの確率が行ごとに返るので、並べ替えや絞り込みに使えます。

03

確率の列が、どのクラスのものか分からなくなった人

classes_ を確認します。公式は、列がクラスのラベルの順に並ぶと説明しています。

具体例で使い分ける

例 1

公式の例: iris の先頭2行

公式の例のとおり、iris のデータで LogisticRegression(random_state=0) を fit し、X[:2, :] に predict と predict_proba を行います。

  • predict の結果は array([0, 0]) で、2行ともクラス 0 と予測されています。
  • predict_proba の結果は 2行 × 3列で、1行目は [9.82e-01, 1.82e-02, 1.44e-08] です。クラス 0 の確率がもっとも大きく、predict の結果と合っています。

結論: predict は答えだけ、predict_proba は答えの根拠になる確率まで返す。

例 2

score との関係

同じ公式の例で、clf.score(X, y) を行います。

  • 結果は 0.97 です。公式は、score が self.predict(X) の、y に対する平均の正解率だと説明しています。

結論: score が使うのは predict のラベル。確率は使わない。

例 3

decision_function との違い

LogisticRegression には decision_function もあります。

  • 公式は、decision_function が信頼度のスコアを返し、2クラスの問題では classes_[1] についてのスコアで、0 より大きければそのクラスと予測されると説明しています。
  • 確率の推定値が欲しいときは、decision_function ではなく predict_proba を使います。

結論: 確率が欲しいなら predict_proba。decision_function は、確率とは別の指標。

問題文から答えを選ぶ手順

  1. 1

    欲しいものを決める

    予測したクラスだけなら predict。確率まで必要なら predict_proba です。

  2. 2

    形を確認する

    predict は (n_samples,)、predict_proba は (n_samples, n_classes) です。

  3. 3

    列の対応を確認する

    predict_proba の列がどのクラスかは、classes_ の順で確かめます。

試験での見分け方

  • 1predict は、クラスのラベルを返す。
  • 2predict_proba は、各クラスの確率の推定値を返し、列はクラスのラベルの順に並ぶ。
  • 3score は predict の結果を使った平均の正解率で、確率は使わない。
  • 4decision_function は信頼度のスコアで、確率の推定値ではない。

誤答しやすい選択肢

predict_proba が1次元の配列を返すと考える

修正: 公式の定義では、形は (n_samples, n_classes) の2次元で、列はクラスごとに並びます。

predict_proba の列の順が、データに出てきた順だと考える

修正: 公式は、クラスのラベルの順に並ぶと説明しています。対応は classes_ で確かめます。

decision_function の値を、そのまま確率として読む

修正: decision_function は信頼度のスコアです。確率の推定値は predict_proba が返します。

確認問題

Q1predict と predict_proba のうち、確率の推定値を返すのは?

答え: predict_proba

公式は、predict_proba を確率の推定値、predict をクラスのラベルの予測と説明しています。

Q2predict_proba が返す配列の形は?

答え: (n_samples, n_classes)

サンプルごとの行に、クラスごとの確率が並びます。

Q3predict_proba の列は、何の順に並ぶか?

答え: クラスのラベルの順(classes_ の順)

公式は、すべてのクラスについての推定値が、クラスのラベルの順に並ぶと説明しています。

Q4score が返すのは何か?

答え: predict(X) の、y に対する平均の正解率

公式の説明どおり、確率ではなく、予測したラベルが合った割合です。

到達チェック

  • predict と predict_proba の返す値の違いを言える
  • それぞれの配列の形を言える
  • predict_proba の列の並びを classes_ で確かめられる
  • decision_function が確率でないことを言える

同じ資格で次に知りたいこと

よくある質問

Qpredict と predict_proba の違いは?

A

predict は予測したクラスのラベルを返し、predict_proba は各クラスの確率の推定値を返します。

Qpredict_proba の列は、どのクラスに対応しますか?

A

クラスのラベルの順に並びます。対応は、モデルの classes_ で確かめられます。

Qpredict_proba の値は、decision_function と同じですか?

A

違います。decision_function は信頼度のスコアで、確率の推定値は predict_proba が返します。

Qデータ分析試験の範囲?

A

本サイトの第6章scikit-learnで扱います。出題の形式や範囲は、受験前に公式の案内で確認してください。

次に見る比較

執筆: AI資格ドリル編集部(運営者情報を見る)