by28777換哪了 by28777( 七 )


在Sklearn機器學習包中 , 集成了各種各樣的數據集 , 包括前面的糖尿病數據集 , 這里引入的是鳶尾花卉(Iris)數據集 , 它也是一個很常用的數據集 。該數據集一共包含4個特征變量 , 1個類別變量 , 共有150個樣本 。其中四個特征分別是萼片的長度和寬度、花瓣的長度和寬度 , 一個類別變量是標記鳶尾花所屬的分類情況 , 該值包含三種情況 , 即山鳶尾(Iris-setosa)、變色鳶尾(Iris-versicolor)和維吉尼亞鳶尾(Iris-virginica) 。鳶尾花數據集詳細介紹如表2所示:

by28777換哪了  by28777

文章插圖
Class 類別變量 。0表示山鳶尾 , 1表示變色鳶尾 , 2表示維吉尼亞鳶尾 。int
iris里有兩個屬性iris.data , iris.target 。data是一個矩陣 , 每一列代表了萼片或花瓣的長寬 , 一共4列 , 每一行代表一個被測量的鳶尾植物 , 一共采樣了150條記錄 , 即150朵鳶尾花樣本 。
from sklearn.datasets import load_iris #導入數據集irisiris = load_iris() #載入數據集print(iris.data)
輸出如下所示:
[[ 5.1 3.5 1.4 0.2][ 4.9 3. 1.4 0.2][ 4.7 3.2 1.3 0.2][ 4.6 3.1 1.5 0.2]....[ 6.7 3. 5.2 2.3][ 6.3 2.5 5. 1.9][ 6.5 3. 5.2 2. ][ 6.2 3.4 5.4 2.3][ 5.9 3. 5.1 1.8]]
target是一個數組 , 存儲了每行數據對應的樣本屬于哪一類鳶尾植物 , 要么是山鳶尾(值為0) , 要么是變色鳶尾(值為1) , 要么是維吉尼亞鳶尾(值為2) , 數組的長度是150 。
print(iris.target) #輸出真實標簽print(len(iris.target)) #150個樣本 每個樣本4個特征print(iris.data.shape)[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 22 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 22 2]150(150L, 4L)
從輸出結果可以看到 , 類標共分為三類 , 前面50個類標位0 , 中間50個類標位1 , 后面為2 。下面給詳細介紹使用邏輯回歸對這個數據集進行分析的代碼 。
(2).散點圖繪制
在載入了鳶尾花數據集(數據data和標簽target)之后 , 我們需要獲取其中兩列數據或兩個特征 , 再調用scatter()函數繪制散點圖 。其中獲取一個特征的核心代碼為:X = [x[0] for x in DD] , 將獲取的值賦值給X變量 。完整代碼如下:
# -*- coding: utf-8 -*-# By:Eastmount CSDN 2021-07-03import matplotlib.pyplot as pltimport numpy as npfrom sklearn.datasets import load_iris #導入數據集iris#載入數據集iris = load_iris()print(iris.data) #輸出數據集print(iris.target) #輸出真實標簽#獲取花卉兩列數據集DD = iris.dataX = [x[0] for x in DD]print(X)Y = [x[1] for x in DD]print(Y)#plt.scatter(X, Y, c=iris.target, marker='x')plt.scatter(X[:50], Y[:50], color='red', marker='o', label='setosa') #前50個樣本plt.scatter(X[50:100], Y[50:100], color='blue', marker='x', label='versicolor') #中間50個plt.scatter(X[100:], Y[100:],color='green', marker='+', label='Virginica') #后50個樣本plt.legend(loc=2) #左上角plt.show()
輸出如圖11所示:
by28777換哪了  by28777

文章插圖
(3).線性回歸分析
下述代碼先獲取鳶尾花數據集的前兩列數據 , 再調用Sklearn庫中線性回歸模型進行分析 , 完整代碼如文件所示 。
# -*- coding: utf-8 -*-# By:Eastmount CSDN 2021-07-03#之一步 導入數據集from sklearn.datasets import load_irishua = load_iris()#獲取花瓣的長和寬x = [n[0] for n in hua.data]y = [n[1] for n in hua.data]import numpy as np #轉換成數組x = np.array(x).reshape(len(x),1)y = np.array(y).reshape(len(y),1)#第二步 線性回歸分析from sklearn.linear_model import LinearRegressionclf = LinearRegression()clf.fit(x,y)pre = clf.predict(x)print(pre)#第三步 畫圖import matplotlib.pyplot as pltplt.scatter(x,y,s=100)plt.plot(x,pre,"r-",linewidth=4)for idx, m in enumerate(x):plt.plot([m,m],[y[idx],pre[idx]], 'g-')plt.show()
輸出圖形如圖12所示 , 并且可以看到所有散點到擬合的一元一次方程的距離 。
by28777換哪了  by28777

文章插圖
(4).邏輯回歸分析鳶尾花
講解完線性回歸分析之后 , 那如果用邏輯回歸分析的結果究竟如何呢?下面開始講述 。從散點圖(圖11)中可以看出 , 數據集是線性可分的 , 劃分為3類 , 分別對應三種類型的鳶尾花 , 下面采用邏輯回歸對其進行分析預測 。

推薦閱讀