python sklearn包——混淆矩陣、分類報告等自動生成方式
preface:做著最近的任務(wù),對數(shù)據(jù)處理,做些簡單的提特征,用機器學習算法跑下程序得出結(jié)果,看看哪些特征的組合較好,這一系列流程必然要用到很多函數(shù),故將自己常用函數(shù)記錄上。應(yīng)該說這些函數(shù)基本上都會用到,像是數(shù)據(jù)預處理,處理完了后特征提取、降維、訓練預測、通過混淆矩陣看分類效果,得出報告。
1.輸入
從數(shù)據(jù)集開始,提取特征轉(zhuǎn)化為有標簽的數(shù)據(jù)集,轉(zhuǎn)為向量。拆分成訓練集和測試集,這里不多講,在上一篇博客中談到用StratifiedKFold()函數(shù)即可。在訓練集中有data和target開始。
2.處理
def my_preprocessing(train_data):
from sklearn import preprocessing
X_normalized = preprocessing.normalize(train_data ,norm = "l2",axis=0)#使用l2范式,對特征列進行正則
return X_normalized
def my_feature_selection(data, target):
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
data_new = SelectKBest(chi2, k= 50).fit_transform(data,target)
return data_new
def my_PCA(data):#data without target, just train data, withou train target.
from sklearn import decomposition
pca_sklearn = decomposition.PCA()
pca_sklearn.fit(data)
main_var = pca_sklearn.explained_variance_
print sum(main_var)*0.9
import matplotlib.pyplot as plt
n = 15
plt.plot(main_var[:n])
plt.show()
def clf_train(data,target):
from sklearn import svm
#from sklearn.linear_model import LogisticRegression
clf = svm.SVC(C=100,kernel="rbf",gamma=0.001)
clf.fit(data,target)
#clf_LR = LogisticRegression()
#clf_LR.fit(x_train, y_train)
#y_pred_LR = clf_LR.predict(x_test)
return clf
def my_confusion_matrix(y_true, y_pred):
from sklearn.metrics import confusion_matrix
labels = list(set(y_true))
conf_mat = confusion_matrix(y_true, y_pred, labels = labels)
print "confusion_matrix(left labels: y_true, up labels: y_pred):"
print "labels\t",
for i in range(len(labels)):
print labels[i],"\t",
print
for i in range(len(conf_mat)):
print i,"\t",
for j in range(len(conf_mat[i])):
print conf_mat[i][j],'\t',
print
print
def my_classification_report(y_true, y_pred):
from sklearn.metrics import classification_report
print "classification_report(left: labels):"
print classification_report(y_true, y_pred)
my_preprocess()函數(shù):
主要使用sklearn的preprocessing函數(shù)中的normalize()函數(shù),默認參數(shù)為l2范式,對特征列進行正則處理。即每一個樣例,處理標簽,每行的平方和為1.
my_feature_selection()函數(shù):
使用sklearn的feature_selection函數(shù)中SelectKBest()函數(shù)和chi2()函數(shù),若是用詞袋提取了很多維的稀疏特征,有必要使用卡方選取前k個有效的特征。
my_PCA()函數(shù):
主要用來觀察前多少個特征是主要特征,并且畫圖??纯辞岸嗌賯€特征占據(jù)主要部分。
clf_train()函數(shù):
可用多種機器學習算法,如SVM, LR, RF, GBDT等等很多,其中像SVM需要調(diào)參數(shù)的,有專門調(diào)試參數(shù)的函數(shù)如StratifiedKFold()(見前幾篇博客)。以達到最優(yōu)。
my_confusion_matrix()函數(shù):
主要是針對預測出來的結(jié)果,和原來的結(jié)果對比,算出混淆矩陣,不必自己計算。其對每個類別的混淆矩陣都計算出來了,并且labels參數(shù)默認是排序了的。
my_classification_report()函數(shù):
主要通過sklearn.metrics函數(shù)中的classification_report()函數(shù),針對每個類別給出詳細的準確率、召回率和F-值這三個參數(shù)和宏平均值,用來評價算法好壞。另外ROC曲線的話,需要是對二分類才可以。多類別似乎不行。
主要參考sklearn官網(wǎng)
補充拓展:[sklearn] 混淆矩陣——多分類預測結(jié)果統(tǒng)計
調(diào)用的函數(shù):confusion_matrix(typeTrue, typePred)
typeTrue:實際類別,list類型
typePred:預測類別,list類型
結(jié)果如下面的截圖:
第i行:實際為第i類,預測到各個類的樣本數(shù)
第j列:預測為第j類,實際為各個類的樣本數(shù)
true↓ predict→

以上這篇python sklearn包——混淆矩陣、分類報告等自動生成方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
如何基于Python實現(xiàn)數(shù)字類型轉(zhuǎn)換
這篇文章主要介紹了如何基于Python實現(xiàn)數(shù)字類型轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-02-02
Pytorch torch.repeat_interleave()用法示例詳解
torch.repeat_interleave() 是 PyTorch 中的一個函數(shù),用于按指定的方式重復張量中的元素,這篇文章主要介紹了Pytorch torch.repeat_interleave()用法示例詳解,需要的朋友可以參考下2024-01-01
Python關(guān)鍵字之global與nonlocal
這篇文章主要為大家詳細介紹了Python關(guān)鍵字之global與nonlocal,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03
Django Rest framework之權(quán)限的實現(xiàn)示例
這篇文章主要介紹了Django Rest framework之權(quán)限的實現(xiàn)示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-12-12
python 實現(xiàn)list或string按指定分段
今天小編就為大家分享一篇python 實現(xiàn)list或string按指定分段,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12

