我一直在嘗試使用Python和scikit-learn工具包來訓練ML分類器。如何交叉驗證正確
首先我申請我自己的閾值(如int(LEN(X)* 0.75)),在將數據集和打印我的指標時,得到了這樣的結果:
precision recall f1-score support
1 0.63 0.96 0.76 23
2 0.96 0.64 0.77 36
avg/total 0.83 0.76 0.76 59
然後我用交叉驗證,以有使用該模型的準確度的更詳細的視圖:分數= cross_validation.cross_val_score(X,Y,CV = 10),並得到下面的分數:
Cross_val_scores = [0.66666667 0.79166667 0.45833333 0.70833333 0.52173913
0.52173913 0.47826087 0.47826087 0.52173913 0.47826087 ]
準確度:0.56(標準差:+/- 0.22),其中準確度等於平均值(分數)。
有人可以請教我如何正確解釋這些分數?我理解使用交叉驗證時數據集是如何分裂的,以便在整個數據集範圍內觀察模型的準確性,但我想知道更多。
- 舉例來說,有沒有辦法分裂,並達到最高精度(例如0.79166667),如果是的話我怎麼能這樣做呢?
- 我想象會發生這種情況,因爲我的數據集中存在一個裂縫,即使用這些數據進行訓練時模型可以產生更接近的預測,對嗎?
- 有沒有辦法降低相對較高的標準偏差?
謝謝你的時間。
嘗試優化數據分離方式以提高交叉驗證分數沒有多大意義。交叉驗證的重點在於看你的模型對它不知道的數據有多好;以一種自定義的方式分裂它只是爲了提高你的分數,只是自欺欺人。你應該以某種先驗的方式確定分割(例如,純粹的隨機抽樣,跨分類分類,不管),並嘗試通過改進模型本身來最大化分數。 – BrenBarn