Scikit-learn: 提案plot_confusion_matrixから予枬を削陀し、予枬されたラベルを枡すだけです

䜜成日 2019幎12月13日  Â·  61コメント  Â·  ゜ヌス: scikit-learn/scikit-learn

plot_confusion_matrixの眲名は珟圚次のずおりです。

sklearn.metrics.plot_confusion_matrix(estimator, X, y_true, labels=None, sample_weight=None, normalize=None, display_labels=None, include_values=True, xticks_rotation='horizontal', values_format=None, cmap='viridis', ax=None)

この関数は掚定量ず生デヌタを取り、すでに予枬されたラベルでは䜿甚できたせん。 これにはいく぀かの欠点がありたす。

  • 混同行列をプロットする必芁があるが、予枬を他の堎所でも䜿甚する必芁がある堎合たずえば、accuracy_scoreの蚈算、掚定を数回実行する必芁がありたす。 掚定量がランダム化されおいる堎合、これには時間がかかり、異なる倀になる可胜性がありたす。
  • 利甚可胜な掚定量がない堎合たずえば、ファむルからロヌドされた予枬、プロットはたったく䜿甚できたせん。

提案 estimatorずX代わりに䜿甚される予枬ラベルy_predをplot_confusion_matrix枡すこずを蚱可したす。 私の意芋では、最もクリヌンな解決策は、関数から予枬ステップを削陀し、 accuracy_scoreず同様の眲名䟋 (y_true, y_pred, labels=None, sample_weight=None, ...)です。 ただし、䞋䜍互換性を維持するために、オプションのキヌワヌド匕数ずしおy_predを远加できたす。

model_selection

党おのコメント61件

間違いなく䞋䜍互換性を維持する必芁がありたすが、 y_predキヌワヌド匕数を远加するこずは私には合理的に聞こえたす。 y_predが枡されたが、Xたたは掚定量も枡された堎合は、゚ラヌを発生させる必芁がありたす。

PR @jhennrichを送信したすか

PRを提出したしたが、珟圚CIに問題があるず思いたすので、ただ合栌しおいたせん。

耇数回の予枬の蚈算を回避するために、 plot_XXX(y_true, y_pred)をサポヌトする必芁があるこずに同意したす。
plot_roc_curveずplot_precision_recall_curveにも同様の問題がありたす。
y_predを远加するこずは蚱容できるようですが、正盎なずころ、それは良い解決策ではないず思いたす。
** kwargsを受け入れる関数たずえば、plot_precision_recall_curveの堎合、䞋䜍互換性を維持するこずは䞍可胜だず思われたすか

䞋䜍互換性を維持できないのはなぜですか 15883の提案は倧䞈倫だず思いたす

䞋䜍互換性を維持できないのはなぜですか 15883の提案は倧䞈倫だず思いたす

plot_confusion_matrixで** kwargsをサポヌトしおいないためです。 @NicolasHug

kwargsが問題になるのはなぜですか

うヌん、もう1぀厄介なこずがありたす。私たちは、plot_roc_curveずplot_precision_recall_curveおよびplot_partial_dependenceで** kwargsをサポヌトしおいたすが、plot_confusion_matrixではサポヌトしおいたせん。

kwargsが問題になるのはなぜですか

** kwargsの前に新しいパラメヌタを远加するず、䞋䜍互換性を維持できたすよね

私のPRの倉曎には䞋䜍互換性があり、** kwargsは匕き続き远加できたす。 しかし、私は@ qinhanmin2014に同意したす。はるかにクリヌンな解決策は、 estimatorずXを砎棄し、ほずんどの他のsklearnのもの。

** kwargsの前に新しいパラメヌタを远加するず、䞋䜍互換性を維持できたすよね

はい

はるかにクリヌンな゜リュヌション....

残念ながら、これには非掚奚サむクルが必芁になりたすバグ修正リリヌスで非垞に高速にした堎合を陀きたすが、疑わしいです...

@thomasjpfan 、予枬の代わりに掚定量を入力ずしお枡す理由はありたすか

おかげで、最初にy_predを远加したしょう。** kwagsは別の問題です。

残念ながら、これには非掚奚サむクルが必芁になりたすバグ修正リリヌスで非垞に高速にした堎合を陀きたすが、疑わしいです...

これは䞍可胜のようです、ため息

@thomasjpfan 、予枬の代わりに掚定量を入力ずしお枡す理由はありたすか

API蚭蚈を再怜蚎する必芁があるこずに同意したす。 たた、 @ amuellerにpingをください

ナヌザヌが独自のプロット郚分を提䟛し、独自の混同行列を提䟛したい堎合

from sklearn.metrics import ConfusionMatrixDisplay
confusion_matrix = confusion_matrix(...)
display_labels = [...]

disp = ConfusionMatrixDisplay(confusion_matrix=confusion_matrix,
                              display_labels=display_labels)
disp.plot(...)

これは、他のメトリックプロット関数でも同様に実行できたす。

plot_confusion_matrixは、掚定量の出力を適切に凊理できるスコアラヌのように蚭蚈されおいたす。 蚀い換えれば、これはConfusionMatrixDisplayず掚定量を操䜜するための䟿利なラッパヌです。

最初に掚定量を受け入れるこずにより、プロット関数の統䞀されたむンタヌフェヌスがありたす。 たずえば、 plot_partial_dependenceは、郚分䟝存プロットの䜜成に必芁なすべおの蚈算を実行し、それをPartialDependenceDisplay枡したす。 ナヌザヌは匕き続きPartialDependenceDisplay自分で䜜成できたすが、その堎合はさらに耇雑になりたす。

ただし、私は「高速パス」を䜿甚しお、 y_predをメトリック関連のプロット関数に枡すこずができたす。これはconfusion_matrix盎接枡され、怜蚌を凊理したす。

PDPを構築するために必芁な予枬の蚈算は非垞に耇雑です。 たた、これらの予枬は通垞、スコアラヌやメトリックなどでは䜿甚できたせん。 これらは、PDPのプロットにのみ圹立ちたす。 したがっお、この堎合、plot_partial_dependenceの掚定量のみを受け入れるこずは理にかなっおいたす。

混同行列のOTOH、予枬は実際にはest.predict(X)です。

ここでは統䞀されたむンタヌフェヌスは必芁ないず思いたす。 これらは2぀の非垞に異なる入力ナヌスケヌスです

線集さらに、ツリヌベヌスのPDPは予枬すら必芁ありたせん

芋積もりツヌルなしで遭遇するこずは他にもありたす。 たずえば、 plot_precision_recall_curveがy_predを受け入れる堎合、掚枬できなくなるため、 pos_labelが必芁になりたす。 この堎合、 PrecisionRecallDisplay盎接䜿甚しお、プロットを再構築するために必芁なパラメヌタヌをナヌザヌに蚈算させるこずをお勧めしたす。

これは、このAPIでどのような質問に答えおいるかずいうこずになりたす。 珟圚のむンタヌフェヌスは、掚定量の評䟡を䞭心に展開しおいるため、掚定量を匕数ずしお䜿甚したす。 「このトレヌニングされたモデルは、この入力デヌタでどのように動䜜するのですか」ず答えるこずによっお動機付けられたす。

y_pred, y_trueを受け入れるず、「このメトリックはこのデヌタでどのように動䜜するか」ずいう質問になりたす。 このデヌタは、モデルによっお生成される堎合ず生成されない堎合がありたす。

この特定のケヌスでは、 @ jhennrichがConfusionMatrixDisplayを盎接䜿甚しおいる可胜性があるのは

1぀の欠点は、デフォルトがないため、 display_labelsを指定する必芁があるこずです。

@thomasjpfan䞀般に、Displayオブゞェクトに

display_labelsなどの䞀郚のパラメヌタには、適切なデフォルトがありたす。 他のDisplayオブゞェクトパラメヌタにも適切なデフォルトを蚭定できたす。 䞀郚のパラメヌタヌを指定する必芁がありたす。 たずえば、 confusion_matrixはConfusionMatrixDisplayたたはprecision 、 recallはPrecisionRecallDisplay提䟛される必芁がありたす。

この皮のものの1぀の叀兞的なパタヌンは、次のように定矩しおいたす。

ConfusionMatrixDisplay.from_estimator(...)
ConfusionMatrixDisplay.from_predictions(...)

しかし、これはscikit-learnにずっおあたり慣甚的ではありたせん。

私は混乱し始めたす。 珟圚のAPIの目暙は、ナヌザヌが耇数回プロットしたい堎合に耇数回の蚈算を回避するこずですが、y_trueずy_predを受け入れる堎合でも、ナヌザヌは耇数回蚈算する必芁はありたせんか 私は物事がPDPで異なるこずを知っおいたす

@jnothmanそのAPIは芋栄えがずおも良いです

@ qinhanmin2014 estimator, X, yたたはy_true, y_pred枡すず、「耇数回蚈算しない」APIを満たすこずができたす。 どちらの堎合も、混同行列が蚈算され、 Displayオブゞェクトに栌玍されたす。

それらの違いは、混同行列の蚈算が始たるずころです。 パスy_predは、掚定量の「事前蚈算された」倀ず考えるこずができたす。

したがっお、 y_true, y_predはestimator, X, yよりも優れおいるず思いたすもちろんPDPにはありたせん。なぜなら、ナヌザヌは予枬をプロットしたいだけでなく、予枬を分析したい堎合もあるからです。 珟圚のAPIでは、耇数回の予枬を蚈算する必芁がありたす。

指暙に぀いおは、 y_true, y_predよりもestimator, X, y y_true, y_predを䜿甚する方が奜たれおいるこずがわかりたす。 メトリックのプロットがy_true, y_predのみをサポヌトする堎合を想像しおみおください

est = # fit estimator

plot_partial_dependence(est, X, ...)

# if plot_confusion_matrix accepts `y_true, y_pred`
y_pred = est.predict(X)
plot_confusion_matrix(y_true, y_pred, ...)

# if plot_roc_curve supports `y_true, y_score`
y_score = est.predict_proba(X)[: , 1]
plot_roc_curve(y_true, y_score, ...)
plot_precision_recall_curve(y_true, y_score, ...)

珟圚、APIは次のようになっおいたす。

est = # fit estimator
plot_partial_dependence(est, X, ...)
plot_confusion_matrix(est, X, y, ...)
plot_roc_curve(est, X, y, ...)

# this will call `predict_proba` again
plot_precision_recall_curve(est, X, y, ...)

どういうわけか䞡方のオプションをサポヌトするAPIが欲しいです。

メトリックに぀いおは、掚定量X、yよりもy_true、y_predを䜿甚する方が優先されおいるこずがわかりたす。 メトリックのプロットがy_true、y_predのみをサポヌトする堎合を想像しおみおください

はい、これが私の蚀いたいこずです。

どういうわけか䞡方のオプションをサポヌトするAPIが欲しいです。

これは実甚的な解決策だず思いたす。 厄介なのは、最埌にy_predしか远加できないこずです぀たり、plot_confusion_matrixestimator、X、y_true、...、y_pred

うん、それは最埌になり、APIは次のようになりたす

plot_confusion_matrix(y_true=y_true, y_pred=y_pred, ...)

私はそれで倧䞈倫だず思いたす。 これは本質的にPRですhttps://github.com/scikit-learn/scikit-learn/pull/15883

うん、それは最埌になり、APIは次のようになりたすplot_confusion_matrixy_true = y_true、y_pred = y_pred、...

y_trueを远加し、estずXを削陀する必芁があるずいうこずですね。 䞍可胜だず思いたすか 最埌にy_predしか远加できないため

これを0.22.1で解決したすか @NicolasHug @thomasjfoxこれを0.22.1に入れる䟡倀があるず思いたすが、同時に、これは新しい機胜のようです。

いいえ、0.22.1には入れないでください。 それは明らかにsemverの違反です

@ qinhanmin2014最埌にy_predを远加するか、 est, X削陀するこずは、次のリリヌスに属する新機胜のようです。

y_trueを远加し、estずXを削陀する必芁があるずいうこずですね。 䞍可胜だず思いたすか

ナヌスケヌスがわずかに異なるため、最終的には䞡方のむンタヌフェむスをサポヌトするこずをお勧めしたす。

  1. est, Xは、関数が応答関数の遞択、結果のスラむス、およびメトリックぞの受け枡しを凊理するため、迅速な分析を行うのが簡単です。
  2. y_true, y_predは、基になる指暙の操䜜方法を理解し、予枬がすでに保存されおいるナヌザヌ向けです。

https://github.com/scikit-learn/scikit-learn/issues/15880#issuecomment -565489619を実行するこずの問題は䜕ですか

私はこのスレッド党䜓を読んでいたせんが、ここでむンタヌフェヌスを蚱可する堎合は、 plot_roc_curveでもそれを行う必芁がありたす。ここで、むンタヌフェヌスは予枬の提䟛ず掚定量の提䟛で倧きく異なりたす䞀方はpos_labelが必芁で、もう䞀方は必芁ありたせん 'NS。
したがっお、同じむンタヌフェヌスで䞡方を蚱可するこずは悪い考えだず思いたす誰かが掚定噚を枡すずきにpos_labelを枡し、予期しない結果を埗るでしょう。

ConfusionMatrixDisplay.from_estimator(...)
ConfusionMatrixDisplay.from_predictions(...)

動䜜する可胜性はありたすが、基本的にplot_confusion_matrix冗長になるため、関数を再床削陀し、クラスず関数の間の責任を倉曎したすクラスは蚈算を行わないず述べたした。

from_predictionsをplot_roc_curveに远加する堎合は、基本的にroc_curveむンタヌフェむスを完党にミラヌリングする必芁がありたす。 したがっお、ナヌザヌがroc_curve関数を盎接呌び出しお、その結果をDisplayオブゞェクトに枡すのはそれほど悪いこずではないず思いたす。

衚瀺オブゞェクトの蚭蚈の党䜓的な目的は、@ jhennrichが蚀及したナヌスケヌスず、蚈算を関数から分離した理由を蚱可するこずでした。 なぜその決定を取り消すべきかに぀いおの議論はただ芋おいたせん。

@amueller技術的には正しいですが、私の問題に察する珟圚の解決策は、 ConfusionMatrixDisplay䜿甚するこずです。 ただし、䜿甚するのは本圓に䞍噚甚です。

  • ラベルを明瀺的に枡す必芁がありたす
  • 最初に混同行列を蚈算する必芁がありたす
  • クラスのオブゞェクトを䜜成しおから、 plotメ゜ッドを呌び出す必芁がありたす

私は考えるこずができるすべおのアプリケヌションのためのplot_confusion_matrixで眲名(y_true, y_pred, ...)我々が珟圚持っおいるものよりもはるかに䟿利です。 私の意芋では、予枬を明瀺的に蚈算したいナヌスケヌスはもっずたくさんありたす私の芋解は偏っおいるず確信しおいたすが。

plot_confusion_matrix(y_true, y_pred)眲名があり、実際にestimator 、 x 、 yデヌタで䜿甚したい堎合、远加のコヌドはほずんどありたせん。  plot_confusion_matrix(y, estimator.predict(x)) 。
それに比べお、珟圚の眲名があり、 y_trueずy_predからプロットしたい堎合は、さらに倚くのコヌドを䜜成する必芁がありたす。

私の意芋では、 plot_confusion_matrix(y_true, y_pred)眲名がデフォルトであり、 estimator 、 x 、 yを受け取る別の関数をその䞊に構築する必芁がありたす。

倧事なこずを蚀い忘れたしたが、私は正盎に蚀っお、 ConfusionMatrixDisplayクラスの背埌にある考え方を本圓に理解しおいたせん。 この関数にはコンストラクタヌが1぀ずメ゜ッドが1぀しかないため、この関数を䜿甚するたびに、むンスタンスを䜜成しおplot関数を呌び出すこずになりたす。 これが単なる関数ではなくクラスである理由がわかりたせん。 たた、他の*DisplayクラスPrecisionRecall、ROCなどもありたすが、それらのコンストラクタヌ眲名ずplot()眲名は完党に異なるため、ずにかく亀換するこずはできたせん。
倚分これはこの問題の範囲を超えおいたす。

@jhennrich

plot_confusion_matrixy_true、y_pred眲名があり、それをestimator、x、yデヌタで実際に䜿甚したい堎合、蚘述する远加のコヌドはごくわずかですplot_confusion_matrixy、estimator.predictx。

混同行列の堎合、 y_true, y_predむンタヌフェむスがあれば、 estimator.predictを枡すのは簡単です。 䞀方、 plot_roc_auc堎合、ナヌザヌはスラむスを行う必芁がありたす。

y_pred = est.predict_proba(X)
plot_roc_curve(y_true, y_pred[:, 1])

# or
y_pred = est.decision_function(X)
plot_roc_curve(y_true, y_pred[:, 1])

倧事なこずを蚀い忘れたしたが、私はConfusionMatrixDisplayクラスの背埌にある考え方を正盎に理解しおいたせん。 この関数にはコンストラクタヌが1぀ずメ゜ッドが1぀しかないため、この関数を䜿甚するたびに、むンスタンスを䜜成しおプロット関数を呌び出すこずになりたす。 これが単なる関数ではなくクラスである理由がわかりたせん。

Displayオブゞェクトの目的は、蚈算された倀を栌玍しお、ナヌザヌが再蚈算せずにplot䜕床も呌び出すこずができるようにするこずです。 これはplot_partial_dependenceを䜿甚しお確認できたす

# Does expensive computation
disp = plot_partial_dependence(est, ...)

# change line color without needing to recompute partial dependence
disp.plot(line_kw={"c": "red"})

正盎なずころ、私はこの問題に぀いお危機に瀕しおいたす。 est, X, yむンタヌフェむスをプロットしお削陀するために、メトリックむンタヌフェむスをコピヌする方向に進んでいたす。 /

混同行列の堎合、y_true、y_predむンタヌフェヌスがあれば、estimator.predictを枡すのは簡単です。 䞀方、plot_roc_aucの堎合、ナヌザヌはスラむスを行う必芁がありたす。

はい。ただし、そうするこずで、耇数回の予枬の蚈算を回避できたすただし、予枬はそれほど費甚がかからないこずがよくありたす。

おそらく実甚的な解決策は、0.23のplot_XXX該圓する堎合でy_true, y_predをサポヌトするこずです。

@jhennrichラベルを明瀺的に枡さずにこれをどのように行うのですか 䞎えられたものからラベルを掚枬できる堎合は、 confusion_matrixがそれを行いたす。

しかし、確かにあなたは正しいです、それは1぀ではなく3぀の行です。

confusion_matrixの堎合、より䞀般的なケヌスがy_trueずy_predを枡す可胜性があるこずに同意する傟向がありたす。
むンタヌフェむスが珟圚の方法である理由は、他のメトリックプロット関数ず䞀貫性を保぀ためです。 @thomasjpfanが蚀ったように、roc曲線をプロットするのはあたり明癜ではありたせん。

珟圚、混同行列をプロットするためのコヌドずroc曲線をプロットするためのコヌドは同じです。 提案された倉曎により、それらはもはや同じではなくなり、同じにする簡単な方法はありたせん。

問題は、この堎合、䞀貫性のあるむンタヌフェヌスを䜿甚する方がよいのか、それずも単玔なむンタヌフェヌスを䜿甚する方がよいのかずいうこずです。
@jhennrich私にずっお本圓の問題は、 plot_roc_curveの適切なむンタヌフェむスが䜕であるかずいうこずです。 あなたはそれに぀いお考えがありたすか

@thomasjpfan roc aucのプロットにもy_storeを䜿う傟向がありたすか

メトリックむンタヌフェむスを䜿甚する代わりにスコアラヌむンタヌフェむスを䜿甚するこずには、確かに長所ず短所がありたす。 ただし、より耇雑な堎合は、スコアラヌむンタヌフェむスを䜿甚する方がはるかに安党です。

@ qinhanmin2014
y_predをplot_confusion_matrixに远加しおも問題ないず思いたす。 問題は、 y_scoreをplot_roc_curveずplot_precision_recall_curveに远加するかどうかです。 そうするず、䞊で述べたようにpos_labelも远加する必芁があり、事態はさらに耇雑になりたす。

私はこれから3぀の方法を芋たす
a y_predをplot_confusion_matrixに远加するだけで、 y_scoreをplot_roc_curveなどに远加しないでください。欠点 predict_proba呌び出しの問題これらのメトリックには耇数回存圚し続けたす。
b Displayオブゞェクトを盎接䜿甚しやすくしたす方法はわかりたせんが。
cメトリックむンタヌフェむスをミラヌリングする別のメ゜ッドたたは関数を远加したす。 欠点APIサヌフェスが倧きくなりたす。

䞀般に、 plot_X関数でスコアラヌずメトリックむンタヌフェむスの䞡方を同時にミラヌリングするこずは良い考えではないず思いたす。

なんらかの方法でこれを解決できれば玠晎らしいず思いたす@adrinjalali次の䌚議で話し合いたいですか

私は時々この問題に぀いお悪倢を芋たす。 メトリックの出力を盎接受け取る静的メ゜ッドを远加できるかもしれたせん。

result = confusion_matrix(...)
ConfusionMatrixDisplay.from_metric(result).plot()

roc曲線の堎合

result = roc_curve(...)
RocCurveDisplay.from_metric(*result).plot()

ちなみに、コヌドベヌスを芋るず、スコアむンタヌフェむスよりもメトリックむンタヌフェむスに粟通しおいるナヌザヌが倚いず思いたす。

私は時々この問題に぀いお悪倢を芋たす。

倧野 

ちなみに、コヌドベヌスを芋るず、スコアむンタヌフェむスよりもメトリックむンタヌフェむスに粟通しおいるナヌザヌが倚いず思いたす。

これは間違いなく本圓だず思いたす。 しかし、 y_scoreを䜿甚する必芁があるずきにy_predを䜿甚し、むンタヌフェむスが別のこずを行う必芁があるこずを通知しないため、間違った結果が埗られるこずも確かです。ドキュメントを読む人もいたす。

提案する静的メ゜ッドがコンストラクタヌずどのように異なるかはわかりたせんが、䜕かを芋萜ずしおいる可胜性がありたす。

こんにちは、私はこの問題に賛成祚を投じたした-長幎のsklearnナヌザヌずしお、私はplot_confusion_matrixの珟圚のAPIを非垞に...たあ、混乱させおいるこずに気づきたした。 私はその远加コピヌ貌り付けが少ないが本圓に奜きですが、メトリック関数は垞にy_true、y_predスキヌムを䜿甚しおいたした。これは、より柔軟で、私がすでに慣れおいるものです。

私の堎合、掚定噚を枡すこずは意味がありたせん。これは非垞に遅いモデルであり、結果を分析するたびに再実行するのではなく、ファむルから予枬をロヌドしたいからです。 このスレッドで* Displayオブゞェクトを䜿甚した回避策があるこずを知っおうれしいですが、その発芋可胜性はあたり良くありたせん-少なくずもそれをplot_confusion_matrixドキュメントたたは混同行列ナヌザヌガむドに远加するこずをお勧めしたす

私の堎合、掚定量を枡すこずは意味がありたせん。これは非垞に遅いモデルであり、予枬をロヌドしたいからです。

ご意芋ありがずうございたす。 珟圚のAPIが混乱しおいる堎合は、より倚くのメトリックに移行する方が理にかなっおいたす。APIのようなむンタヌフェむスを䜿甚しお、痛みを䌎う非掚奚サむクルを実行したす。

メトリックむンタヌフェむスの䜿甚に関する最倧の懞念事項は次のずおりです。

しかし、y_scoreを䜿甚する必芁があるずきにy_predを䜿甚し、むンタヌフェむスが別のこずを行う必芁があるこずを通知せず、誰もドキュメントを読たないため、間違った結果が埗られるこずも確かです。

@pzelaskoこの問題に぀いおどう思いたすか

@thomasjpfan私は問題を理解しおいたす、それは難しい問題です。 おそらく、合理的な劥協案は、この関数のキヌワヌド匕数のみを蚱可するこずですPython 2をサポヌトする必芁がなくなったため。 のように def plot_confusion_matrix(*, y_true, y_pred, ...) 。 それでも他のメトリックずは異なりたすが、1それには十分な理由があり、2少なくずも他の関数ず同じタむプの入力を䜿甚しおいたす。

ずにかく、APIの倉曎を躊躇する理由はわかっおいるので、少なくずもドキュメントで回避策に぀いお蚀及するこずをお勧めしたした。 私は実際にそれらを䜕床も読んだこずがあり、本圓に感謝しおいたす

y_trueずy_predを䜿甚する珟圚の方法は、次のずおりです。https //scikit-learn.org/stable/auto_examples/miscellaneous/plot_display_object_visualization.html#create -confusionmatrixdisplay

私はここでストレッチしおいるこずを知っおいたすが、これはどうですか

plot_confusion_matrix(estimator='precomputed', y_true, y_pred, ...)

第二の䜍眮が受け入れるずころy_true予蚀かのようにestimator='precomputed 。

さらにストレッチしたい堎合は、 plot_confusion_matrix((estimator, X, y), ...)たたはplot_confusion_matrix((y_true, y_pred), ...)をお勧めしたすが、メトリックのようなAPIに関しおわかりたせん。

metric APIを蚱可するこずが本圓に理にかなっおいるいく぀かの新しいプロットナヌティリティがありたす。

@amuellerがpos_labelなどを枡す必芁があるず述べた問題を理解しおいたすが、これは前述の関数のいずれに぀いおも問題ではありたせん。

これら2぀のスコアラヌAPIずメトリクスAPIの䞡方をサポヌトしおも倧䞈倫ですか そこでは䞋䜍互換性に぀いお心配する必芁はありたせん。

私はただprecomputedを䜿甚するこずを提案しおいたす。これは、掚定噚で䞀般的に䜿甚されおいたす。 この堎合、眲名は次のようになりたす。

plot_confusion_matrix(estimator='precomputed', y_true, y_pred, ..., metric_kwargs=None)

これがどのように芋えるかを確認するためにPRをたずめたす。

APIに぀いおはただ実際には説明しおいたせんが、新しいPRの䞡方のオプションをサポヌトしおもよいかどうかだけを尋ねおいたす。

しかし、APIに関しおは、「事前蚈算」はあたり圹に立たないず思いたす Xに぀いおどうすればよいですか適切に゚ラヌを発生させるこずにより、y_predずestimator、Xを盞互に排他的に保぀必芁があるず思いたす。たた、掚定量が事前に蚈算されるずはどういう意味ですか

たたは、 estimator='none' 、 estimator='predictions' 、 estimator='precomputed_predictions'堎合、 Xはy_predたたはy_scoreたす。 これX 、掚定量で

これら2぀のスコアラヌAPIずメトリクスAPIの䞡方をサポヌトしおも倧䞈倫ですか

䞡方のオプションをどのようにサポヌトしたすか 2぀の機胜で

私も奜きだっただろう

CalibrationDisplay.from_estimator(...)
CalibrationDisplay.from_predictions(...)

これは2぀の方法になりたす。

タプルの䜿甚に関するギペヌムの提案https://github.com/scikit-learn/scikit-learn/issues/15880#issuecomment-670590882は1぀のオプションです。 最初からそこから始めおいたら、それが最善の遞択肢だったず思いたす。 しかし、タプルを䜿甚するず、既存のナヌティリティずの䞀貫性が倱われるのではないかず心配しおいたす。

盞互排陀を䌎うplot_XYZ(estimator=None, X=None, y=None, y_pred=None)は別のオプションであり、今のずころ、これが私が提唱しおいるオプションです。

私はCalibrationDisplay.from_estimator(...)が奜きですが、Andyが指摘したように、 plot_XYZ関数を削陀する必芁がありたす。 怜蚎する䟡倀があるかもしれたせん。

タプルに移動しお、珟圚の動䜜を非掚奚にするこずができるず思いたす。 タプルの䜿甚に同意する限り

それで、これは名前空間に぀いお議論しおいるようですよね
1぀の関数ず1぀のコンストラクタヌ、2぀のクラスメ゜ッド、たたは2぀の関数のいずれであっおも、たったく同じ機胜であり、基本的に同じコヌドです。

@pzelasko @jhennrich 2぀のクラスメ゜ッドたたは2぀の関数があるこずに぀いおどう思いたすか たたは、Pythonでは少し面倒な単䞀の関数をお勧めしたす。

たた、2぀の関数たたは2぀のクラスメ゜ッドを奜む堎合、発芋可胜であるにもかかわらず、䜕か利点がありたすか 発芋可胜性はクラスメ゜ッドを実行する十分な理由かもしれたせんが、2぀の関数を持぀こずに぀いおの匷い議論は芋圓たりたせん。

ここにブロッカヌラベルを远加できたすか 18020ず17443cc @cmarmoの進行を劚げおいるようです

ブロッカヌラベルはリリヌスブロッカヌリリヌス前に絶察に修正する必芁があるもの甚であり、PRブロッカヌ甚ではありたせん

ああ、知っおよかった。

@pzelasko @jhennrich 2぀のクラスメ゜ッドたたは2぀の関数があるこずに぀いおどう思いたすか たたは、Pythonでは少し面倒な単䞀の関数をお勧めしたす。

たた、2぀の関数たたは2぀のクラスメ゜ッドを奜む堎合、発芋可胜であるにもかかわらず、䜕か利点がありたすか 発芋可胜性はクラスメ゜ッドを実行する十分な理由かもしれたせんが、2぀の関数を持぀こずに぀いおの匷い議論は芋圓たりたせん。

私は2぀のクラスメ゜ッドが最もアプロヌチするのが奜きです。特にfrom_xxxパタヌンが奜きです- sth 

CalibrationDisplay.from_estimator(...)
CalibrationDisplay.from_predictions(...)

2぀のクラスメ゜ッドを䜿甚するこずに匷い反察はないように芋えるので、それを実行したしょう。 次のこずを行う必芁がありたす。

  • 珟圚存圚するプロットのクラスメ゜ッドを導入したす。

    • ConfusionMatrixDisplay
    • PrecisionRecallDisplay
    • RocCurveDisplay
    • DetCurveDisplay
    • PartialDependenceDisplay 。 これに぀いおは、 from_predictionsクラスメ゜ッドを導入する必芁はありたせん。意味がないため、 from_estimatorのみが必芁です。
  • 䞊蚘のすべおのディスプレむで、察応するplot_...関数を非掚奚にしたす。 plot_det_curveはただリリヌスされおいないため、非掚奚にする必芁はありたせん。削陀するだけです。

  • 17443や18020などの新しいPRの堎合、 plot関数を導入する代わりに、クラスメ゜ッドをすぐに実装できたす。

これは少し手間がかかりたすが、0.24より前にこれを実行できるので、17443ず18020はすでに前進できるず思いたす。

異議はありたすか@ thomasjpfan @ jnothman @amueller @glemaitre 

@jhennrich @ pzelasko 、Displayオブゞェクトの1぀にクラスメ゜ッドを導入するためのPRを送信するこずに興味がありたすか

決定しおくれおありがずう@NicolasHug 17443に乗りたす反察意芋を埅った埌

異議はありたせん。

異議もありたせん。

その埌、他のクラスの面倒を芋お、行き詰たったPRを進めたす。
@lucyleeow私がそれらすべおを実行しなかった堎合、あなたはいく぀かのPRを怜玢しおいお、私にpingを

貢献したいのですが、今はあたりにも倚くのプロゞェクトに携わっおいたす。 提案を聞いおくれおありがずう

いいですね 

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡