sklearn--模型的評價


 

sklearn.metrics

1.MSE(均方誤差)和RMSE(均方根誤差),以及score()

lr.score(test_x,test_y)#越接近1越好,負的很差
from sklearn.metrics import mean_squared_error
mean_squared_error(test_y,lr.predict(test_x))#mse
np.sqrt(mean_squared_error(test_y,lr.predict(test_x)))
from sklearn.metrics import accuracy_score
print(accuracy_score(predict_results, target_test))

 2.混淆矩陣

混淆矩陣的每一列代表了預測類別  ,每一列的總數表示預測為該類別的數據的數目;每一行代表了數據的真實歸屬類別,每一行的數據總數表示該類別的數據實例的數目。每一列中的數值表示真實數據被預測為該類的數目:如下圖,第一行第一列中的43表示有43個實際歸屬第一類的實例被預測為第一類,同理,第二行第一列的2表示有2個實際歸屬為第二類的實例被錯誤預測為第一類。

cnf_matrix = confusion_matrix(y_test_undersample,y_pred_undersample)
import seaborn as sns
sns.heatmap(cnf_matrix,cmap="Blues",annot=True,fmt='d',square=True)
plt.ylabel('True Label')
plt.xlabel('pre Label')
plt.title('Confusion matrix')

 

 學習曲線

通過觀察訓練集和測試集的得分來看兩個曲線的靠近程度,如果是兩個曲線的方差太大,測試集差訓練集好,則說明是過擬合,如果兩個曲線方差不太大,兩個的訓練的效果都不好,這就說明是欠擬合

from sklearn.model_selection import learning_curve #繪制學習曲線,以確定模型的狀況 
def plot_learning_curve(estimator, title, X, y, ylim=None, cv=None,
                        train_sizes=np.linspace(.1, 1.0, 5)): 
    """
    畫出data在某模型上的learning curve.
    參數解釋
    ----------
    estimator : 你用的分類器。
    title : 表格的標題。
    X : 輸入的feature,numpy類型
    y : 輸入的target vector
    ylim : tuple格式的(ymin, ymax), 設定圖像中縱坐標的最低點和最高點
    cv : 做cross-validation的時候,數據分成的份數,其中一份作為cv集,其余n-1份作為training(默認為3份)
    """ 
    plt.figure() 
    train_sizes, train_scores, test_scores = learning_curve( estimator, X, y, cv=5, n_jobs=1, train_sizes=train_sizes,scoring='neg_mean_squared_error') 
    train_scores=np.sqrt(-train_scores)
    test_scores=np.sqrt(-test_scores)
    train_scores_mean = np.mean(train_scores, axis=1) 
    train_scores_std = np.std(train_scores, axis=1) 
    test_scores_mean = np.mean(test_scores, axis=1) 
    test_scores_std = np.std(test_scores, axis=1) 
    plt.fill_between(train_sizes, train_scores_mean - train_scores_std, train_scores_mean + train_scores_std, alpha=0.1, color="r") 
    plt.fill_between(train_sizes, test_scores_mean - test_scores_std, test_scores_mean + test_scores_std, alpha=0.1, color="g") 
    plt.plot(train_sizes, train_scores_mean, 'o-', color="r", label="Training score") 
    plt.plot(train_sizes, test_scores_mean, 'o-', color="g", label="Cross-validation score") 
    plt.xlabel("Training examples") 
    plt.ylabel("Score") 
    plt.legend(loc="best") 
    plt.grid("on") 
    if ylim: 
        plt.ylim(ylim) 
        plt.title(title) 
        plt.show() #少樣本的情況情況下繪出學習曲線 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM