K-近邻算法之K值的选择(带案例)
生活随笔
收集整理的這篇文章主要介紹了
K-近邻算法之K值的选择(带案例)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
三、K值的選擇
K值選擇問題,李航博士的一書「統計學習方法」上所說:
選擇較小的K值,就相當于用較小的領域中的訓練實例進行預測,“學習”近似誤差會減小,只有與輸入實例較近或相似的訓練實例才會對預測結果起作用,與此同時帶來的問題是“學習”的估計誤差會增大,換句話說,K值的減小就意味著整體模型變得復雜,容易發生過擬合;
選擇較大的K值,就相當于用較大領域中的訓練實例進行預測,其優點是可以減少學習的估計誤差,但缺點是學習的近似誤差會增大。這時候,與輸入實例較遠(不相似的)訓練實例也會對預測器作用,使預測發生錯誤,且K值的增大就意味著整體的模型變得簡單。
K=N(N為訓練樣本個數),則完全不足取,因為此時無論輸入實例是什么,都只是簡單的預測它屬于在訓練實例中最多的類,模型過于簡單,忽略了訓練實例中大量有用信息。
在實際應用中,K值一般取一個比較小的數值,例如采用交叉驗證法(簡單來說,就是把訓練數據在分成兩組:訓練集和驗證集)來選擇最優的K值。
- 近似誤差:
- 對現有訓練集的訓練誤差,關注訓練集,
- 如果近似誤差過小可能會出現過擬合的現象,對現有的訓練集能有很好的預測,但是對未知的測試樣本將會出現較大偏差的預測。
- 模型本身不是最接近最佳模型。
- 估計誤差:
- 可以理解為對測試集的測試誤差,關注測試集,
- 估計誤差小說明對未知數據的預測能力好,
- 模型本身最接近最佳模型。
KNN中K值大小選擇對模型的影響
- k值過小:
- 容易受到異常點的影響
- 容易過擬合
- 模型過于復雜
- k值過大:
- 受到樣本均衡的問題
- 容易欠擬合
- 模型過于簡單
四、案例1:鳶尾花種類預測
1)scikit-learn數據集API介紹
- sklearn.datasets
- 加載獲取流行數據集
- datasets.load_*()
- 獲取小規模數據集,數據包含在datasets中
- datasets.fetch_*(data_home=None)
- 獲取大規模數據,需要從網上下載,函數的第一個參數就是data-Home表示數據集的下載目錄。默認是~/scikit_learn_data/
2)scikit-learn小數據集
-
sklearn.datasets.load_iris()
加載并返回鳶尾花數據集
3)scikit-learn大數據集
-
sklearn.datasets.fetch_20newsgroups(data_home=None,subset=‘train’)
- subset:“train"或者"test”,"all"可選,選擇需要加載的數據集
- 訓練集的"訓練",測試集的”測試“,兩者的"全部"
4)sklearn數據集返回值介紹
- load_fetch返回的數據類型都是datasets.base.Bunch(字段格式)
- data:特征數據數組
- target:標簽數組
- DESCR:數據描述
- feature_names:特征名字
- target_names:標簽名字
5)查看數據分布
- seaborn介紹
- Seaborn是基于Matplotlib核心庫對其進行了更高級的API封裝,可以輕松畫出更漂亮的圖形。而Seabor的漂亮主要體現在配色更加舒服以及圖形元素的樣式更加細膩。
- 安裝pip3 install seaborn
- seaborn.Implot()是一個非常有用的方法,它在繪制二維散點圖的時候,自動完成回歸擬合。
- sns.Implot(x,y): x,y分別代表橫縱坐標的列名
- data 關聯的數據集
- hut 代表按照什么分類方式顯示
- fit_reg 是否進行線性擬合
6)數據集的劃分
一般數據集劃分為兩個部分:
- 訓練數據:用于訓練,構建模型
- 測試數據:用于模型檢驗,評估模型是否有效
劃分比例:
- 訓練集:70%~80%
- 測試集:20%~30%
數據集劃分的API
- sklearn.model_selection.train_test_split(arrays,*options)
- 參數:
- x 數據集的特征值
- y 數據集的標簽值
- test_size 測試繼的大小,一般為float
- random_state 隨機數種子。不同的種子會造成不同的隨機結果,相同的種子結果相同
- return
- x_train,x_test,y_train,y_test
- 參數:
總結
以上是生活随笔為你收集整理的K-近邻算法之K值的选择(带案例)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OPS
- 下一篇: amoled led 排列_为何AMOL