KFoldトレーニングを使用して、検証精度を使用して、スプリットを設定し、速度を呼び出す適切な閾値(閾値)1.KFold(クロスバリデーション)2.np.logical_andを選択する(nは2つのアレイはブールnはである)3 .np.logical_not(BOOLアレイが正である抗抗すなわち、正用)

--- ---復元コンテンツ始まります

1. k_fold = KFold(n_split、シャッフル)インデックスカッターに構成KFold

インデックスのk_fold.split(インデックス)が切断されます。

パラメータ:、切断部分を表す10が想定されるカット部分は、9部1があるシャッフル洗浄、インデックスを切断する必要がインデックス値を表す場合、トレーニングセットの一部は、一連のテストであるn_split

インポートNPとしてnumpyの
 から sklearn.model_selectionのインポートKFold 

指数 = np.arange(20 
k_fold = KFold(n_splits = 10、シャッフル= 偽)
train_test_set = k_fold.split(指標)
 のために(train_set、test_set)において:train_test_set
     プリント(train_set )
     プリント(test_set)

2.np.logical_and(pred_issame、test_issame)#pred_issame要素とtest_issameがTrueであれば、リターンが真である、ないものを返された人はFalseです

BOOL BOOLアレイpred_issame入力アレイ、test_issame入力パラメータ説明

インポートNPとしてnumpyの
pred_issame = np.array([、TRUE TRUE、FALSE、FALSE])
actual_issame = np.array([、FALSE TRUE、FALSE、FALSE])
 プリント(np.logical_and(pred_issame、actual_issame))
#[FALSE真偽偽]

3. np.logical_not(pred_issame)#真の入力が電車に変換Falseに、Falseで変換します 

パラメータ:pred_issame入力配列は、ブール値を表し、

インポートのNPとしてnumpyの
pred_issame = np.array([真、TRUE、FALSE FALSE])
 プリント(np.logical_not(pred_issame))
[FALSE FALSE TRUE TRUE]

ステップ:インデックス構造のインデックス、train_setのが入射を生成するためKFoldの使用とtest_set

ステップ2:リスト構造の使用np.arange(0、4、0.4)閾値、リスト閾値サイクル

第三段階:

        最初のステップ:使用np.less(DIST、しきい値)予測された結果を達成するために

        ステップ2:

                TP = np.logical_and(pred_issame、actual_issame)#陽性試料を陽性試料として決定されます

                FP = np.logical_and(pre_issame、np.logical_not(actual_issame))#サンプル陰性は陽性サンプルとして決定されます

                TN = np.logical_and(np.logical_not(pre_issame)、np.logical_not(actual_issame))#サンプル陰性陰性サンプルが決定されます

                FN = np.logical_and(np.logical_not(pre_issame)、actual_issame)#陽性試料は陰性サンプルとして決定されます

                TPR = 0の場合、TP + FN == 0他のフロート(TP)/フロート(TP + FN)#リコール

                FPR = 0であればFP + TN == 0他のフロート(TN)/フロート(FP + TN)

                accurは=(TP + TN)/(TP + FP + FN + TN)

ステップ4:使用threshold_max = np.argmax(accur)#最大精度指標値を取得し、最高の指標値の閾値であります 

DEFのcalculate_roc(THRESH、DIST、actual_issame):
    pre_issame = np.less(DIST、THRESH)
    TP = np.sum(np.logical_and(pre_issame、actual_issame)) n個のサンプルを陽性サンプルとして予測され 
    、FP = np.sum(NP .logical_and(pre_issame、np.logical_not(actual_issame))) 陰性サンプルが陽性サンプルを予測される 
    TN = np.sum(np.logical_and(np.logical_not(pre_issame)、np.logical_not(actual_issame))) 陰性サンプルであります陰性サンプル予測 
    のFn = np.sum(np.logical_and(np.logical_not(pre_issame)、actual_issame)) N個のサンプルが陰性サンプルを予測される

    TPR = 0 IF TP + TN == 0 他のフロート(TP)/フロート( + TP FN)
    FPR= 0 であれば TP + FN == 0 他のフロート(TN)/フロート(FP + TN)
    accur =((TP + TN)/ dist.size)
     リターンTPR、FPR、accur
 #の
 インポートNPとしてnumpyの
 から sklearn.model_selectionのインポートKFoldの
距離 = np.array([0.1、0.2、0.3、0.25、0.33、0.20、0.18、0.24 ])
actual_issame = np.array([、TRUE TRUE、FALSE FALSE、FALSE、TRUE、真、偽])
k_fold = KFold(n_splits = 4、シャッフル= 偽)
指数 = np.arange(LEN(距離))
 のため k_num、(train_set、test_set)列挙(k_fold.split(インデックス)):
    しきい値 = np.arange(0、1、0.04 
    精度 = np.zeros(LEN(閾値))
     のため threshold_index、閾値列挙(しきい値):
        _、_、精度[ threshold_index] = calculate_roc(閾値距離[train_set]、actual_issame [train_set])

    max_threshold = np.argmax(精度)
     プリント(しきい値[max_threshold])

 

 

  

 

 

---終わり---コンテンツを復元

おすすめ

転載: www.cnblogs.com/my-love-is-python/p/11352581.html