機械学習アルゴリズムの評価でsklearn

#マシンの分類アルゴリズムの評価学習
#バイナリ分類アルゴリズム評価
インポートnumpyのAS NP
インポートASのPLT matplotlib.pyplot
インポートPANDAS AS PDを
sklearnインポートデータセットから
D = datasets.load_digits()
X-d.data =
Y- =は、D。 target.copy()#は、元のデータ変更防止
(LEN(Y))プリントを
Y [d.target == 9]。1 =
Y [d.target!= 9] = 0
プリント(Y)
プリント(pd.value_counts(Y ))#統計データ、各出現数
sklearn.model_selectionからインポートtrain_test_split
x_train、x_test、y_train、android.permission.FACTOR。train_test_split =(X、Y、random_state = 666)
sklearn.linear_modelインポートロジスティック回帰から
log_reg =ロジスティック回帰(ソルバー=「ニュートン-CGデータ分類のためのロジスティック回帰アルゴリズムを使用して「)#
log_reg.fit(x_train、y_train)
印刷(log_reg.score(x_test、android.permission.FACTOR。))
y_pre = log_reg.predict(x_test)
DEF TN(y_true、y_pre):
戻りnp.sum((y_true == 0)&(y_pre == 0))
デフFP(y_true、y_pre):
戻りnp.sum((y_true == 0)&(y_pre == 1))
DEF FN(y_true、y_pre):
戻りnp.sum((y_true == 1)&(y_pre == 0))
デフTP(y_true、y_pre):
戻りNP。和((y_true == 1)&(y_pre == 1))
印刷(TN(y_test、y_pre))
プリント(FP(y_test、y_pre))
プリント(FN(y_test、y_pre))
プリント(TP(y_test、y_pre ))
混淆矩阵的定义
DEF confusion_matrix(y_true、y_pre):
戻りnp.array([
[TN(y_true、y_pre)、FP(y_true、y_pre)]、
[FN(y_true、y_pre)、TP(y_true、y_pre )]
])
プリント(confusion_matrix(y_test、y_pre))
精准率
デフ精度(y_true、y_pre):
試してみる:
リターン・TP(y_true、y_pre)/(FP(y_true、y_pre)+ TP(y_true、y_pre))
を除い:
リターン0.0
#召回率
デフリコール(y_true、y_pre):
試してみてください。
リターンTP(y_true、y_pre)/(FN(y_true、y_pre)+ TP(y_true、y_pre))
を除く:
リターン0.0
プリント(精度(y_test、y_pre))
プリント(リコール(y_test、y_pre))
#sklearn中直接调用混淆矩阵、召回率、精准率
confusion_matrixをインポートsklearn.metricsから
sklearn.metricsからprecision_scoreをインポート
sklearn.metricsからrecall_scoreインポート
プリント((confusion_matrix(y_test、y_pre)))
プリント(precision_score(y_test、y_pre))
プリント(recall_scoreを( y_test、y_pre))
(log_reg.score(x_test、android.permission.FACTOR。))印刷
大型データギャップを挟ん複合インジケータがデータを最小限にバイアスすることができるように計算され、両方の調和平均、取得するために、値に#sklearn F1を
DEF F1(プレ、REC):
トライ:
リターン(* 2 *プリREC)/(プリ+ REC)
を除く:
リターン0.0
プリント(FL(プレシジョン(android.permission.FACTOR、y_pre)、リコール(android.permission.FACTOR、y_pre)。))
印刷(FL(0.1、0.9 ))
を印刷(FL(0,1))
に直接カプセル化され#f1_score sklearn機能
sklearn.metricsインポートf1_scoreのから
プリント(f1_score(android.permission.FACTOR。、y_pre))
プリント(log_reg.decision_function(x_test))#ロジスティック回帰予測出力サイズ決定境界、(0と比較して)シータ* Xの、すなわち、値
#= 0閾値決定境界スコアの変化は、機械学習の再現率と精度を変化させることができる
decision_scores = log_reg.decision_function(x_test)は、試験#1に属し値シータ* Xデータセットが計算され、決定境界閾値比較出力0予測結果
y_pre2 = np.array(decision_scores> = 5 、DTYPE = "INT")
プリント(精度(y_test、y_pre2) )#改善する(閾値を上げる)
(。リコール(android.permission.FACTOR、y_pre2))を印刷#が減少
プリント(confusion_matrix(android.permission.FACTOR、y_pre2)。)
y_pre3 = np.array(decision_scores> = - 。5、DTYPE = " int型「)
を印刷(プレシジョン(android.permission.FACTOR。、y_pre3))#減少(閾値が低下している)
(リコール(android.permission.FACTOR。、y_pre3を印刷))#改善
を印刷(confusion_matrix(android.permission.FACTOR。、y_pre3は))
(y_pre3)印刷
#描かれた決定境界のしきい値を精度と再現率の曲線
sklearn.metricsインポートprecision_scoreから
sklearn.metricsからrecall_scoreインポート
しきい値= np.arange(np.min(decision_scores)、np.max(decision_scores)を、0.1)
事前= []
REC = []
以下のためのしきい値でしきい値:
y_pre11 = np.array(decision_scores>しきい値、DTYPE = "INT")
pre.append(precision_score(android.permission.FACTOR、y_pre11)。)
rec.append(recall_score(android.permission.FACTOR。、y_pre11))
plt.figure()
plt.plot(しきい値、予め、 "R&LT"、しきい値、REC、 "G")
plt.show()
出力精度及び他の変形を想起曲線
plt.plot(として、RECをあらかじめ、「G」、線幅= 1)
plt.show()
ダイレクトコールsklearnの直接出力精度と再現率変化判定閾値に対応するリコールレートPR曲線の精度、および変更
sklearnからインポートprecision_recall_curve .metrics
decision_scores = log_reg.decision_function(x_test)
PRE1、RECL、thre1 = precision_recall_curve(android.permission.FACTOR。、decision_scores)
(rec1.shape)を印刷
(pre1.shape)プリント
値プリント(thre1.shape)#横少なくとも一つの元素すなわち、右端の1は、正確であった点0の再現率は存在しない
plt.figure()
plt.plot(thre1、PRE1 [ - 1]、 "R&LT")、点#1除去する必要がある
plt.plotを(thre1 、RECL [ - 1]、 "G")
plt.show()
plt.plot(PRE1、RECL)
PLT。公演()
コールROC(TPR及びFPR曲線)#sklearnで
sklearn.metricsからroc_curveインポートする
テストデータから算出閾値ベクターdecision_scores = log_reg.decision_function(x_test)#セット
FPRを、TPR、thre2 = roc_curve(android.permission.FACTOR。、decision_scores)
plt.plot (FPRはTPRは、「R」
より大きい#曲線とx軸領域)(より良い性能点plt.showを囲まれ
た領域囲まroc_aucのROC X軸出力サイズ#を
インポートroc_auc_score sklearn.metricsから
印刷(roc_auc_score(android.permission.FACTOR。、decision_scores))
マルチ分類問題における各アプリケーションの#機械学習評価指標
インポートnumpyのAS NP
インポートASのPLT matplotlib.pyplot
インポートPANDAS AS PDを
sklearnインポートデータセットから
D = datasets.load_digits()
X-d.data =
= Yをd.target
sklearn.model_selectionインポートtrain_test_splitから
x_train、x_test、y_train、android.permission.FACTOR。train_test_split =(X、Y、random_state = 666)
sklearn.linear_modelインポートロジスティック回帰から
そのLOG1 =ロジスティック回帰()
log1.fit(x_train、y_train)
プリント(log1.score(x_test、android.permission.FACTOR。))
y_p = log1.predict(x_test)
sklearn.metricsからインポートprecision_scoreの
印刷(precision_score(android.permission.FACTOR。、y_p、平均= "マイクロ"))マルチ分類サイズの出力の#正確な速度(設定パラメータの平均必要)
プリント(recall_score(android.permission.FACTOR。、 y_p、平均=)「マイクロ」 )#は、 マルチ分類の出力リコール
インポートconfusion_matrixのsklearn.metricsから
プリント(confusion_matrix(android.permission.FACTOR。、y_p))#混同行列出力
方法#ドロー混同行列は、それぞれの階調によって見ることができるがランク要素の相対的大きさ
C = confusion_matrix(android.permission.FACTOR。、y_p)
画像明るくplt.matshow(C、CMapの= plt.cm.gray)#、を示す行列のデータ要素、大きいほどより正確な予測
plt.show()
= np.sum row_sum(C、軸= 1)
のデータによってerro_matrix = C /#row_sum各行及びデータの各行
#対角値はnp.fill_diagonal(erro_matrix、0)は0で満たされている
プリント(erro_matrix)
#出力間違った場所、明るく、よりエラー
plt.matshow(erro_matrix、CMAP = plt.cm.gray) #誤った結果を出力する多変量分類結果出力
plt.show()

おすすめ

転載: www.cnblogs.com/Yanjy-OnlyOne/p/12526433.html
おすすめ