鳶尾花(iris)數據集主成分分析並繪製3D圖案例應用(獻給初學者)

由Fisher在1936年整理的Iris 鳶尾花數據集是一個經典數據集,在統計學習和機器學習領域都經常被用作示例。其數據集變量包含4個特徵(Sepal.Length(花萼長度)、Sepal.Width(花萼寬度)、Petal.Length(花瓣長度)、Petal.Width(花瓣寬度))這四個變量預測鳶尾花的分類,其特徵值都為正浮點數,單位為釐米。預測變量目標值為鳶尾花的分類為三類:Iris Setosa(山鳶尾)、Iris Versicolour(雜色鳶尾),Iris Virginica(維吉尼亞鳶尾)。

Iris數據集內包含 3 類共 150 條記錄,每類各 50 個數據,每條記錄都有 4 項特徵:花萼長度、花萼寬度、花瓣長度、花瓣寬度,可以通過這4個特徵預測鳶尾花卉屬於(iris-setosa, iris-versicolour, iris-virginica)中的哪一品種。

int類型, 對三種分類做編號如下:

0 : Iris setosa (山鳶尾)

1 :Iris versicolor (雜色鳶尾)

2 :Iris virginica(維吉尼亞鳶尾)

第一步:對iris數據集導入,進行探索性分析,通過語言print(v_iris.target)查看花卉總類

鳶尾花(iris)數據集主成分分析並繪製3D圖案例應用(獻給初學者)

導入數據

運行結果如下,輸出的結果包含150個數值,其中共有三種可能的取值(0、1、2),分別代表三種不同的鳶尾花卉。

鳶尾花(iris)數據集主成分分析並繪製3D圖案例應用(獻給初學者)

程序運行結果

對數據集查看分析,通過訪問v_iris的target_names屬性,可以瞭解每個值所代表的花卉類別。

鳶尾花(iris)數據集主成分分析並繪製3D圖案例應用(獻給初學者)

數據集分析

運行後結果顯示三類花卉名字為:

鳶尾花(iris)數據集主成分分析並繪製3D圖案例應用(獻給初學者)

三類花卉名字

為了更好地理解這個數據集,可以使用matplotlib進行可視化圖形顯示,用三種顏色表示三種花卉,並繪製一幅散點圖。x表示萼片的長度,y軸表示萼片的寬度。

程序如下:

鳶尾花(iris)數據集主成分分析並繪製3D圖案例應用(獻給初學者)

數據挖掘程序

運行結果如下圖:

紫色、藍色和黃色分別代表了山鳶尾、雜色鳶尾花和維吉尼亞鳶尾。由下圖可見,紫色的點形成一簇,與其他點明顯區分開了。由此可見以萼片的長寬來進行區分可以將山鳶尾花明顯的和其他的兩類品種區分開來。

鳶尾花(iris)數據集主成分分析並繪製3D圖案例應用(獻給初學者)

三種花卉的分類圖

對上面程序改造,根據Petal.Length(花瓣長度)、Petal.Width(花瓣寬度)花瓣變量分類:

程序如下:

鳶尾花(iris)數據集主成分分析並繪製3D圖案例應用(獻給初學者)

改造後的程序


運行結果如下,下圖可以看到,使用花瓣的長和寬作為特徵時,三種類別之間的區別度更明顯,得到了三個不同的簇:

鳶尾花(iris)數據集主成分分析並繪製3D圖案例應用(獻給初學者)

三種物種的分佈圖

上面是二維的分析,然後進行分類繪製的二維分類圖。下面通過主成分分析法(PCA)進行主成分分析,把四維減少到三維,並對得到的結果繪製為3D散點圖。使用萼片和花瓣的測量數據來描述數據集中各個鳶尾花卉的特點scikit-learn庫的fit_transform( )函數用來降維的,它屬於PCA對象。先導入PCA模塊sklearn.decomposition,然後調用PCA( )構造函數,用n_components選項指定要降到幾維(主成分)。此處降為三維(便於繪製三維散點圖),然後調用fit_transform( )函數,傳入四維的v_Iris數據集作為參數。

鳶尾花(iris)數據集主成分分析並繪製3D圖案例應用(獻給初學者)

程序

程序運行後結果顯示的三維分類圖如下:

鳶尾花(iris)數據集主成分分析並繪製3D圖案例應用(獻給初學者)

三維分類圖


分享到:


相關文章: