首页天道酬勤precision,逻辑回归分类阈值

precision,逻辑回归分类阈值

张世龙 06-24 05:20 95次浏览

什么是决策阈值?

虽然sklearn没有直接为我们设置决策阈值,但他让我们可以访问决策得分(决策函数o/p )进行预测。 可以从决策函数输出中选择最佳得分,将其设置为决策阈值,并将所有小于该决策阈值的决策得分值视为负类(0),将所有大于该决策阈值的决策得分值视为正类(1)。

各种决策阈值的精度-召回率曲线可用于选择决策阈值的最佳值,并根据项目是面向精度还是召回率,分别提供高精度(召回率影响不大)或高召回率(召回率影响不大)。

这样做的主要目的是根据我们的ML项目分别是面向精度还是面向召回,获得高精度或高召回率的ML模型。

Code:建立高精度的ML模型

# importrequiredmodules.importpandasaspdimportmatplotlib.pyplotaspltfromsklearnimportdatasetsfromsklearn.model _ SELT Roms klearn.metricsimportclassification _ report、recall_score、precision_score、 accuracy _ score # get the data.data _ set=datasets.load _ breast _ cancer (# getthedataintoanarrayform.x=data inpata inputtargetvariabley.# getthenamesofthefeatures.feature _ list=data _ set.convertthedataintopandasdataframe.data\data columns=feature _ list (# toinsertanoutputcolumnindata _ frame.data _ frame.insert (30,' Outcome ',y ) ) ) run thithin

Code:培训模式

# Train Test Split.x_train,x_test,y_train,y _ test _ split (x,y,test_size=0.2,ranant )

# actualobtainedresultswithoutanymanualsettingofdecisionthreshold.predict _ actual=clf.predict (x _ test ) # predictusingclassifier.accuracy _ actual=clf.score (x _ test,y_test ) class ification _ report _ actual=class

根据以上分类报告可知,(1)的模型精度值为0.92,1,(1)的召回值为1.00。 由于本文的目标是在对召回率影响不大的情况下建立预测(1)的最大高精度模型,为了提高模型的精度,需要从以下精度-召回率曲线中手动选择决策阈值的最佳值。

Code

# plot precision-recallcurveusingsklearn.froms klearn.metricsimportprecision _ recall _ curve precision、recall、tres hos decision_function ) #plottheoutput.PLT.plot ) treshold,precision label=' precision ' (PLT.plot (tres hold,recarecacabling ) ) )

在上图中,如果想要高精度的值,则需要增加决策阈值(x轴)的值,但召回率的值会下降(这是不利的)。 因此,必须选择决策阈值的值。 这将提高精度,但不会大幅降低召回率。 上图中的一个值是约0.6的决策阈值。

# implementingmainlogic.# basedonanalysisoftheprecision-recall curve.# letdecisionthresholdvaluebearound 0.6 . togethighprecisionwithoutaffectingrecallmuch.# desired results.# decisionfunctionoutputforx _ test.df=clf.decision _ function (x _ test ) setthevalueofdecisionthreshold.decision red _ predict=[ ] # iteratethrougheachvalueofdecisionfunctionoutput # andifdecisionscoreisthandecisionthresholdthen, #append(1) totheemptylist (desired _ prediction ) else# append (0)0).fori indf 3360 ifi decision _ teshold 3360 desired

# comparison # oldprecisionvalueprint (oldprecisionvalue : ),precision_score ) y_test,predict _ actual # newpre precision_score ) y_test,desired _ predict (oldprecisionvalue :922077922077922 newprecisionvalue 3360.9714285714140 由于准确性和召回之间的权衡,召回的价值正在下降。 * decisionthresholdinmachinelearning翻译

precision,查准率和查全率