數(shù)據(jù)挖掘:分類與回歸的評(píng)估指標(biāo)教程_第1頁
數(shù)據(jù)挖掘:分類與回歸的評(píng)估指標(biāo)教程_第2頁
數(shù)據(jù)挖掘:分類與回歸的評(píng)估指標(biāo)教程_第3頁
數(shù)據(jù)挖掘:分類與回歸的評(píng)估指標(biāo)教程_第4頁
數(shù)據(jù)挖掘:分類與回歸的評(píng)估指標(biāo)教程_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

數(shù)據(jù)挖掘:分類與回歸的評(píng)估指標(biāo)教程1數(shù)據(jù)挖掘概述1.1數(shù)據(jù)挖掘的基本概念數(shù)據(jù)挖掘(DataMining)是一種從大量數(shù)據(jù)中提取有用信息的過程,這些信息可以是模式、關(guān)聯(lián)、趨勢或異常。數(shù)據(jù)挖掘的目標(biāo)是發(fā)現(xiàn)隱藏在數(shù)據(jù)中的有價(jià)值知識(shí),以支持決策制定。數(shù)據(jù)挖掘技術(shù)廣泛應(yīng)用于商業(yè)智能、科學(xué)研究、工程、醫(yī)療健康等領(lǐng)域。數(shù)據(jù)挖掘涉及多個(gè)步驟,包括數(shù)據(jù)清洗、數(shù)據(jù)集成、數(shù)據(jù)選擇、數(shù)據(jù)變換、數(shù)據(jù)挖掘、模式評(píng)估和知識(shí)表示。其中,數(shù)據(jù)清洗和數(shù)據(jù)集成用于處理數(shù)據(jù)中的不一致性和缺失值;數(shù)據(jù)選擇和數(shù)據(jù)變換則用于減少數(shù)據(jù)量和轉(zhuǎn)換數(shù)據(jù)格式,以便于后續(xù)的挖掘過程;數(shù)據(jù)挖掘是核心步驟,通過應(yīng)用各種算法來發(fā)現(xiàn)數(shù)據(jù)中的模式;模式評(píng)估和知識(shí)表示則是對(duì)挖掘出的模式進(jìn)行評(píng)估和可視化,確保其對(duì)用戶是有意義的。1.1.1示例:數(shù)據(jù)清洗假設(shè)我們有一組銷售數(shù)據(jù),其中包含日期、產(chǎn)品ID、銷售數(shù)量和價(jià)格。數(shù)據(jù)中存在一些缺失值和異常值,需要進(jìn)行清洗。importpandasaspd

#創(chuàng)建示例數(shù)據(jù)

data={

'Date':['2023-01-01','2023-01-02','2023-01-03','2023-01-04','2023-01-05'],

'ProductID':[1,2,3,4,5],

'Quantity':[100,200,None,400,500],

'Price':[10.5,15.2,20.0,None,25.0]

}

df=pd.DataFrame(data)

#數(shù)據(jù)清洗:刪除包含缺失值的行

df_cleaned=df.dropna()

#數(shù)據(jù)清洗:替換異常值

df_cleaned['Quantity']=df_cleaned['Quantity'].replace(0,df_cleaned['Quantity'].mean())

#輸出清洗后的數(shù)據(jù)

print(df_cleaned)1.2分類與回歸的區(qū)別數(shù)據(jù)挖掘中的兩大核心任務(wù)是分類(Classification)和回歸(Regression)。分類和回歸都是預(yù)測模型,但它們預(yù)測的目標(biāo)類型不同。分類:分類任務(wù)的目標(biāo)是預(yù)測離散的類別標(biāo)簽。例如,預(yù)測一封電子郵件是“垃圾郵件”還是“非垃圾郵件”,或者預(yù)測一個(gè)客戶是否會(huì)購買某個(gè)產(chǎn)品?;貧w:回歸任務(wù)的目標(biāo)是預(yù)測連續(xù)的數(shù)值。例如,預(yù)測房價(jià)、股票價(jià)格或銷售額。1.2.1示例:分類與回歸的簡單模型分類:使用邏輯回歸預(yù)測客戶是否會(huì)購買產(chǎn)品fromsklearn.model_selectionimporttrain_test_split

fromsklearn.linear_modelimportLogisticRegression

fromsklearn.metricsimportclassification_report

#創(chuàng)建示例數(shù)據(jù)

X=[[1,2],[3,4],[5,6],[7,8]]

y=[0,0,1,1]#0表示不會(huì)購買,1表示會(huì)購買

#劃分訓(xùn)練集和測試集

X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.25,random_state=0)

#創(chuàng)建邏輯回歸模型

model=LogisticRegression()

#訓(xùn)練模型

model.fit(X_train,y_train)

#預(yù)測

y_pred=model.predict(X_test)

#輸出分類報(bào)告

print(classification_report(y_test,y_pred))回歸:使用線性回歸預(yù)測房價(jià)fromsklearn.model_selectionimporttrain_test_split

fromsklearn.linear_modelimportLinearRegression

fromsklearn.metricsimportmean_squared_error

#創(chuàng)建示例數(shù)據(jù)

X=[[1,2],[3,4],[5,6],[7,8]]

y=[100,150,200,250]#房價(jià)

#劃分訓(xùn)練集和測試集

X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.25,random_state=0)

#創(chuàng)建線性回歸模型

model=LinearRegression()

#訓(xùn)練模型

model.fit(X_train,y_train)

#預(yù)測

y_pred=model.predict(X_test)

#輸出均方誤差

print("MeanSquaredError:",mean_squared_error(y_test,y_pred))通過以上示例,我們可以看到分類和回歸在數(shù)據(jù)挖掘中的應(yīng)用差異,以及如何使用Python中的scikit-learn庫來實(shí)現(xiàn)這些模型。2數(shù)據(jù)挖掘:分類評(píng)估指標(biāo)2.1混淆矩陣的構(gòu)建混淆矩陣是評(píng)估分類模型性能的重要工具,它通過比較預(yù)測結(jié)果與實(shí)際結(jié)果,提供了一種直觀的方式來理解模型的分類效果?;煜仃囃ǔ0膫€(gè)關(guān)鍵部分:真正例(TruePositives,TP)、真反例(TrueNegatives,TN)、假正例(FalsePositives,FP)和假反例(FalseNegatives,FN)。2.1.1示例代碼假設(shè)我們有一個(gè)二分類問題,模型預(yù)測結(jié)果與實(shí)際結(jié)果如下:實(shí)際為正類,預(yù)測為正類:50實(shí)際為正類,預(yù)測為反類:10實(shí)際為反類,預(yù)測為正類:5實(shí)際為反類,預(yù)測為反類:35我們可以使用Python的numpy庫來構(gòu)建混淆矩陣:importnumpyasnp

#實(shí)際結(jié)果

y_true=np.array([1]*60+[0]*40)

#預(yù)測結(jié)果

y_pred=np.array([1]*55+[0]*45)

#構(gòu)建混淆矩陣

fromsklearn.metricsimportconfusion_matrix

cm=confusion_matrix(y_true,y_pred)

print(cm)輸出結(jié)果:[[355]

[1050]]這里,cm[0][0]是真反例(TN),cm[0][1]是假正例(FP),cm[1][0]是假反例(FN),cm[1][1]是真正例(TP)。2.2準(zhǔn)確率、召回率與F1分?jǐn)?shù)2.2.1準(zhǔn)確率準(zhǔn)確率(Accuracy)是分類正確的樣本數(shù)占總樣本數(shù)的比例。計(jì)算公式為:Accuracy2.2.2召回率召回率(Recall)是分類器正確識(shí)別出的正類樣本數(shù)占所有實(shí)際正類樣本數(shù)的比例。計(jì)算公式為:Recall2.2.3F1分?jǐn)?shù)F1分?jǐn)?shù)是準(zhǔn)確率和召回率的調(diào)和平均數(shù),用于在準(zhǔn)確率和召回率之間找到平衡。計(jì)算公式為:F其中,Precision是真正例占所有預(yù)測為正類樣本的比例。2.2.4示例代碼使用sklearn庫計(jì)算準(zhǔn)確率、召回率和F1分?jǐn)?shù):fromsklearn.metricsimportaccuracy_score,recall_score,f1_score

#計(jì)算準(zhǔn)確率

accuracy=accuracy_score(y_true,y_pred)

print("Accuracy:",accuracy)

#計(jì)算召回率

recall=recall_score(y_true,y_pred)

print("Recall:",recall)

#計(jì)算F1分?jǐn)?shù)

f1=f1_score(y_true,y_pred)

print("F1Score:",f1)2.3ROC曲線與AUC值ROC曲線(ReceiverOperatingCharacteristiccurve)是評(píng)估分類模型性能的另一種方法,它通過繪制不同閾值下的真陽性率(TruePositiveRate,TPR)與假陽性率(FalsePositiveRate,FPR)來展示模型的分類能力。AUC值(AreaUndertheCurve)是ROC曲線下方的面積,AUC值越大,模型的分類性能越好。2.3.1示例代碼使用sklearn庫繪制ROC曲線并計(jì)算AUC值:fromsklearn.metricsimportroc_curve,auc

importmatplotlib.pyplotasplt

#模型預(yù)測的概率

y_scores=np.array([0.9]*55+[0.1]*45)

#計(jì)算FPR和TPR

fpr,tpr,_=roc_curve(y_true,y_scores)

roc_auc=auc(fpr,tpr)

#繪制ROC曲線

plt.figure()

lw=2

plt.plot(fpr,tpr,color='darkorange',

lw=lw,label='ROCcurve(area=%0.2f)'%roc_auc)

plt.plot([0,1],[0,1],color='navy',lw=lw,linestyle='--')

plt.xlim([0.0,1.0])

plt.ylim([0.0,1.05])

plt.xlabel('FalsePositiveRate')

plt.ylabel('TruePositiveRate')

plt.title('ReceiverOperatingCharacteristic')

plt.legend(loc="lowerright")

plt.show()2.4多分類問題的評(píng)估在多分類問題中,混淆矩陣和準(zhǔn)確率等指標(biāo)可以擴(kuò)展到多個(gè)類別。例如,對(duì)于三分類問題,混淆矩陣將是一個(gè)3x3的矩陣,而準(zhǔn)確率、召回率和F1分?jǐn)?shù)可以針對(duì)每個(gè)類別分別計(jì)算,也可以計(jì)算一個(gè)加權(quán)平均值。2.4.1示例代碼使用sklearn庫計(jì)算多分類問題的準(zhǔn)確率、召回率和F1分?jǐn)?shù):fromsklearn.metricsimportaccuracy_score,recall_score,f1_score

#假設(shè)我們有三個(gè)類別:0,1,2

y_true=np.array([0]*30+[1]*40+[2]*30)

y_pred=np.array([0]*25+[1]*45+[2]*30)

#計(jì)算準(zhǔn)確率

accuracy=accuracy_score(y_true,y_pred)

print("Accuracy:",accuracy)

#計(jì)算召回率

recall=recall_score(y_true,y_pred,average='weighted')

print("Recall:",recall)

#計(jì)算F1分?jǐn)?shù)

f1=f1_score(y_true,y_pred,average='weighted')

print("F1Score:",f1)以上代碼展示了如何在多分類問題中使用加權(quán)平均來計(jì)算召回率和F1分?jǐn)?shù),其中average='weighted'表示計(jì)算加權(quán)平均值,權(quán)重由每個(gè)類別的樣本數(shù)決定。3數(shù)據(jù)挖掘:回歸評(píng)估指標(biāo)3.1回歸評(píng)估指標(biāo)3.1.1均方誤差(MSE)與均方根誤差(RMSE)均方誤差(MSE)和均方根誤差(RMSE)是評(píng)估回歸模型預(yù)測精度的常用指標(biāo)。MSE計(jì)算的是預(yù)測值與真實(shí)值之間的差的平方的平均值,而RMSE是MSE的平方根。公式MSE:1RMSE:代碼示例importnumpyasnp

fromsklearn.metricsimportmean_squared_error

#假設(shè)真實(shí)值和預(yù)測值

y_true=np.array([3,-0.5,2,7])

y_pred=np.array([2.5,0.0,2,8])

#計(jì)算MSE

mse=mean_squared_error(y_true,y_pred)

print(f'MSE:{mse}')

#計(jì)算RMSE

rmse=np.sqrt(mse)

print(f'RMSE:{rmse}')3.1.2平均絕對(duì)誤差(MAE)平均絕對(duì)誤差(MAE)是預(yù)測值與真實(shí)值之間差的絕對(duì)值的平均值,它對(duì)異常值不敏感。公式代碼示例fromsklearn.metricsimportmean_absolute_error

#使用相同的y_true和y_pred

mae=mean_absolute_error(y_true,y_pred)

print(f'MAE:{mae}')3.1.3R平方(R^2)與調(diào)整R平方R平方(R^2)衡量模型解釋的變異量與總變異量的比例,范圍在0到1之間,值越接近1表示模型擬合越好。調(diào)整R平方是對(duì)R平方的修正,考慮了模型復(fù)雜度的影響,通常在多變量回歸中使用。公式R^2:1調(diào)整R^2:1?1?R代碼示例fromsklearn.metricsimportr2_score

#計(jì)算R^2

r2=r2_score(y_true,y_pred)

print(f'R^2:{r2}')

#計(jì)算調(diào)整R^2

p=1#假設(shè)模型中有一個(gè)參數(shù)

adjusted_r2=1-(1-r2)*(len(y_true)-1)/(len(y_true)-p-1)

print(f'AdjustedR^2:{adjusted_r2}')3.1.4殘差分析殘差分析是檢查回歸模型假設(shè)的有效性,包括殘差的正態(tài)性、均值為0、方差恒定等。代碼示例importmatplotlib.pyplotasplt

fromscipy.statsimportnorm

#計(jì)算殘差

residuals=y_true-y_pred

#繪制殘差圖

plt.scatter(y_pred,residuals)

plt.axhline(y=0,color='r',linestyle='--')

plt.xlabel('PredictedValues')

plt.ylabel('Residuals')

plt.title('ResidualPlot')

plt.show()

#繪制殘差的正態(tài)概率圖

norm_prob_plot=bplot(residuals,plot=plt)

plt.title('NormalProbabilityPlotofResiduals')

plt.show()以上代碼示例展示了如何使用Python的numpy,scikit-learn,matplotlib和scipy庫來計(jì)算和可視化回歸模型的評(píng)估指標(biāo)。通過這些指標(biāo),我們可以更全面地理解模型的性能和可靠性。4數(shù)據(jù)挖掘:分類與回歸的評(píng)估指標(biāo)4.1評(píng)估指標(biāo)的選擇與應(yīng)用4.1.1指標(biāo)選擇的考量因素在數(shù)據(jù)挖掘中,選擇正確的評(píng)估指標(biāo)對(duì)于衡量模型的性能至關(guān)重要。不同的問題類型(如分類或回歸)和業(yè)務(wù)需求可能要求不同的評(píng)估指標(biāo)。以下是一些選擇評(píng)估指標(biāo)時(shí)需要考慮的因素:問題類型:分類問題通常使用準(zhǔn)確率、精確率、召回率、F1分?jǐn)?shù)等指標(biāo);回歸問題則傾向于使用均方誤差(MSE)、均方根誤差(RMSE)、平均絕對(duì)誤差(MAE)等。數(shù)據(jù)不平衡:在數(shù)據(jù)不平衡的情況下,準(zhǔn)確率可能不是最佳選擇,因?yàn)槟P涂赡軆H僅通過預(yù)測多數(shù)類就能獲得較高的準(zhǔn)確率。此時(shí),精確率、召回率或AUC-ROC曲線可能更為合適。業(yè)務(wù)需求:根據(jù)業(yè)務(wù)場景,可能更重視模型的某一方面性能。例如,在醫(yī)療診斷中,召回率可能比精確率更重要,因?yàn)槁┰\的代價(jià)可能遠(yuǎn)高于誤診。模型解釋性:某些指標(biāo)如混淆矩陣可以提供模型預(yù)測的詳細(xì)信息,有助于理解模型的錯(cuò)誤類型,這對(duì)于模型的改進(jìn)和解釋性非常重要。4.1.2實(shí)際案例分析分類問題:心臟病預(yù)測假設(shè)我們正在構(gòu)建一個(gè)模型,用于預(yù)測患者是否患有心臟病。數(shù)據(jù)集包含多個(gè)特征,如年齡、性別、膽固醇水平等,以及一個(gè)二元標(biāo)簽(有病或無?。?。#導(dǎo)入必要的庫

importpandasaspd

fromsklearn.model_selectionimporttrain_test_split

fromsklearn.ensembleimportRandomForestClassifier

fromsklearn.metricsimportaccuracy_score,precision_score,recall_score,f1_score,roc_auc_score

#加載數(shù)據(jù)

data=pd.read_csv('heart_disease_data.csv')

#數(shù)據(jù)預(yù)處理

#假設(shè)數(shù)據(jù)已經(jīng)清洗,特征選擇完成

#劃分?jǐn)?shù)據(jù)集

X=data.drop('target',axis=1)

y=data['target']

X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42)

#訓(xùn)練模型

model=RandomForestClassifier(random_state=42)

model.fit(X_train,y_train)

#預(yù)測

y_pred=model.predict(X_test)

#評(píng)估模型

accuracy=accuracy_score(y_test,y_pred)

precision=precision_score(y_test,y_pred)

recall=recall_score(y_test,y_pred)

f1=f1_score(y_test,y_pred)

roc_auc=roc_auc_score(y_test,y_pred)

print(f'Accuracy:{accuracy}')

print(f'Precision:{precision}')

print(f'Recall:{recall}')

print(f'F1Score:{f1}')

print(f'ROCAUCScore:{roc_auc}')在這個(gè)案例中,我們使用了多種評(píng)估指標(biāo)來全面評(píng)估模型的性能。由于心臟病預(yù)測是一個(gè)高風(fēng)險(xiǎn)領(lǐng)域,我們可能更關(guān)注模型的召回率和AUC-ROC,以確保盡可能多地識(shí)別出真正的心臟病患者?;貧w問題:房價(jià)預(yù)測在房價(jià)預(yù)測的回歸問題中,我們可能使用不同的評(píng)估指標(biāo)來衡量模型的預(yù)測誤差。#導(dǎo)入必要的庫

importpandasaspd

fromsklearn.model_selectionimporttrain_test_split

fromsklearn.linear_modelimportLinearRegression

fromsklearn.metricsimportmean_squared_error,mean_absolute_error,r2_score

#

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論