對鳶尾花數據進行分類的思路


對鳶尾花數據進行分類

1 數據集處理

加載數據集,IRIS 數據集在 sklearn 模塊中已經提供
from sklearn import datasets
iris = datasets.load_iris()
iris_feature = iris.data
iris_target = iris.target
將150個樣本分割為90個訓練集和60個測試集
feature_train, feature_test, target_train, target_test = train_test_split(iris_feature, iris_target, test_size=0.4,random_state=40)

2 決策樹分類(實現)

這里選用CART算法。算法從根節點開始,用訓練集遞歸構建分類樹。在決策樹的構建中,有時會造成決策樹分支過多,這是就需要去掉一些分支,降低過度擬合。通過決策樹的復雜度來避免過度擬合的過程稱為剪枝。

創建決策樹:
步驟1:選擇GiniIndex最小的維度作為分割特征。(GiniIndex計算方式見PPT)
步驟2:如果數據集不能再分割,即GiniIndex為0或只有一個數據,該數據集作為一個葉子節點。
步驟3:對數據集進行二分割
步驟4:對分割的數據集1重復步驟1、2、3,創建true子樹
步驟5:對分割的數據集2重復步驟1、2、3,創建false子樹

明顯的遞歸算法。

剪枝:
需要從訓練集生成一棵完整的決策樹,然后自底向上對非葉子節點進行考察。判斷是否將該節點對應的子樹替換成葉節點。當節點的gain小於給定的 mini Gain時則合並這兩個節點.。

測試:
通過對測試集的預測來驗證准確性。對於不同的划分方式,即選取不同隨機數種子且保持90:60的比例,訓練集准確率為:100 %,測試集准確率為:91.67 %

3 SVM分類(調庫)

支持向量機的基本模型是定義在特征空間上的間隔最大的線性分類器,即求一個分離超平面,這個超平面使得離它最近的點能夠最遠。

通過點到超平面的距離公式,找到最大間隔的優化模型,即找每個超平面對應着一個間隔,就是要找出所有間隔中最大的那個值對應的超平面。

需要注意,如果數據集中存在噪點的話,那么在求超平的時候就會出現很大問題,因此需要引入一個松弛變量ξ來允許一些數據可以處於分隔面錯誤的一側。

以上討論的都是在線性可分情況進行討論的,但是實際問題中給出的數據並不是都是線性可分的。需要使用核函數解決這個問題。
在經過訓練集測試后,訓練集准確率: 0.9444,測試集准確率:0.9833

4 BPNN分類(實現)

BP神經網絡是一種多層前饋神經網絡,該網絡的主要特點是信號前向傳遞,誤差反向傳播。在前向傳播的過程中,輸入信號從輸入層經隱含層處理,直至輸出層。如果輸出層得不到期望輸出,則轉入反向傳播,根據預測誤差調整網絡權值和閾值,從而使BP神經網絡預測輸出不斷逼近期望輸出。

對於鳶尾花數據集,搭建一個輸入層(4)-隱含層(10)-輸出層(1)的神經網絡。
4:feature維度數;10:隱含層神經元數量;1:target維度數。

實現並訓練BP神經網絡,主要有以下幾個步驟:
步驟1:初始化神經網絡參數,主要是確定結構和初始化權重。
步驟2:正向傳播計算。先對數據進行歸一化處理,使其在0-1范圍內,中間層和輸出層激活函數都為sigmoid。
步驟3:成本函數計算,使用一個樣本的期望輸出和實際輸出的誤差的平方用來定義損失函數
步驟4:反向傳播計算,修正權重參數,以提高擬合效果。

測試:
用訓練集通過上述步驟得到一個神經網絡模型,然后代入測試集數據,我們將0-1分為3份(這里用0-0.2-0.8-1),來作為三種類別,訓練集准確率為:95.555556 %
測試集准確率為:93.333333 %。

5 KNN分類(調庫)

KNN算法,即K近鄰算法。選取訓練集中離該數據最近的 k 個點,它們中的大多數屬於哪個類別,則該新數據就屬於哪個類別。

k 的選擇是一個超參數的選擇問題,需要通過調整 K 的值確定最好的 K,最好選奇數,否則會出現同票。可以通過交叉驗證法確定模型的最佳 k 值。

度量距離的方式,一般為 Lp 距離:p = 1 時,為曼哈頓距離:p = 2 時,為歐式距離:歐式距離是我們最常用的計算距離的方式。

分類的規則,采取多數表決的原則,即由輸入實例的 k 個近鄰的訓練實例中的多數類決定輸入實例的類。

需要注意:

  1. 不同特征有不同的量綱,必要時需進行特征歸一化處理
  2. kNN 的時間復雜度為O(DNN),D 是維度數,N 是樣本數,這樣,在特征空間很大和訓練數據很大時,kNN 的訓練時間會非常慢。

在訓練模型后,訓練集准確率: 0.956,測試集准確率: 0.917。


免責聲明!

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



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