鳶尾花數據集分析


鳶尾花數據集分析

鳶尾花

數據集分析一共150行數據,分別為三種種類。

種類 代表數字
setosa 0
versicolor 1
virginica 2

四種特征

特征 翻譯
sepal length (cm) 萼片長度(厘米)
sepal width (cm) 萼片寬度(厘米)
petal length (cm) 花瓣長度(厘米)
petal width (cm) 花瓣寬度(厘米)

各種屬性對對應的散點圖

各種屬性的直方圖

各種屬性的雷達圖

分類代碼點這里

畫圖代碼如下

'''
datatime:2020/6/14
author:wuxiong
description:鳶尾花數據集分類
'''
import numpy
from sklearn.datasets import load_iris 
#讀出鳶尾花數據集data
data=load_iris()

print(data.keys())
#鳶尾花數據集包含的內容
# print(data['data'])
#print(data['DESCR'])
# print(data['target_names'])
# print(data['feature_names'])
# print(data['data'])

import matplotlib.pyplot as plt
import numpy as np

#轉化成nupy數組
data_numpy = np.array(data['data'])
target = np.array(data['target'])
#切片第一列
sepal_lenth = data_numpy[...,0]
#切片第二列
sepal_width = data_numpy[...,1]
#切片第三列
petal_length = data_numpy[...,2]
#切片第四列
petal_width = data_numpy[...,3]

sepal_lenth_feature =[sepal_lenth,'sepal lenth']
sepal_width_feature =[sepal_width,'sepal width']
petal_length_feature =[petal_length,'petal length']
petal_width_feature =[petal_width,'petal width']

features=[sepal_lenth_feature,sepal_width_feature,petal_length_feature,petal_width_feature]

colors1 = '#00CED1' #點的顏色
colors2 = '#DC143C'
clores3 = '#4fd424'

area = np.pi * 4**2  # 點面積 
# 畫散點圖,12張圖
def drawScatter(target,x,y,xlable,ylable):
    for i,j in enumerate(x):
        if(target[i]==0):
            plt.scatter(x[i], y[i], s=area, c=colors1, alpha=0.4, label='setosa')
        elif (target[i]==1):
            plt.scatter(x[i], y[i], s=area, c=colors2, alpha=0.4, label='versicolor')
        else:
            plt.scatter(x[i], y[i], s=area, c=clores3, alpha=0.4, label='virginica')
        plt.xlabel(xlable) 
        plt.ylabel(ylable) 
    plt.show()
pass

#畫直方圖,一共4張圖
def drawHistogram(target,x_feature):
    data = x_feature[0]
    xlable = x_feature[1]
    plt.hist(data, bins=50, normed=0, facecolor="blue", edgecolor="black", alpha=0.7)
    plt.xlabel(xlable)
    plt.ylabel("frequency")
    plt.title("{} histogram".format(xlable))
    plt.show()

#畫雷達圖,一張
def drawRader1(target,sepal_lenth,sepal_width,petal_length,petal_width):
    # 雷達圖1 - 極坐標的折線圖/填圖 - plt.plot()
    plt.figure(figsize=(16,8))
    ax1= plt.subplot(111, projection='polar')
    ax1.set_title('features radar map\n')  # 創建標題
    ax1.set_rlim(0,12)
    data1 = sepal_lenth
    data2 = sepal_width
    data3 = petal_length
    data4 = petal_width
    theta=np.arange(0, 2*np.pi, 2*np.pi/150)
    # 創建數據

    ax1.plot(theta,data1,'.--',label='data1')
    ax1.fill(theta,data1,alpha=0.2)
    ax1.plot(theta,data2,'.--',label='data2')
    ax1.fill(theta,data2,alpha=0.2)
    ax1.plot(theta,data3,'.--',label='data3')
    ax1.fill(theta,data3,alpha=0.2)
    ax1.plot(theta,data4,'.--',label='data4')
    ax1.fill(theta,data4,alpha=0.2)
    
def drawRader2(target,sepal_lenth,sepal_width,petal_length,petal_width):
    labels = np.array(['sepal lenth','sepal width','petal length','petal width']) # 標簽
    dataLenth = 150 # 數據長度
    data1 = sepal_lenth
    data2 = sepal_width
    data3 = petal_length
    data4 = petal_width

    angles = np.linspace(0, 2*np.pi, dataLenth, endpoint=False) # 分割圓周長
    data1 = np.concatenate((data1, [data1[0]])) # 閉合
    data2 = np.concatenate((data2, [data2[0]])) # 閉合
    data3 = np.concatenate((data3, [data3[0]])) # 閉合
    data4 = np.concatenate((data4, [data4[0]])) # 閉合
    angles = np.concatenate((angles, [angles[0]])) # 閉合
    
    plt.figure(figsize=(16,8))
    plt.polar(angles, data1, 'o-', linewidth=1) #做極坐標系
    plt.fill(angles, data1, alpha=0.25)# 填充
    plt.polar(angles, data2, 'o-', linewidth=1) #做極坐標系
    plt.fill(angles, data2, alpha=0.25)# 填充
    plt.polar(angles, data3, 'o-', linewidth=1) #做極坐標系
    plt.fill(angles, data3, alpha=0.25)# 填充
    plt.polar(angles, data4, 'o-', linewidth=1) #做極坐標系
    plt.fill(angles, data4, alpha=0.25)# 填充
    
    plt.thetagrids(angles * 180/np.pi, labels) # 設置網格、標簽
    plt.ylim(0,10)  # polar的極值設置為ylim

drawRader1(target,sepal_lenth,sepal_width,petal_length,petal_width)   
drawRader2(target,sepal_lenth,sepal_width,petal_length,petal_width)
    
for i,x_feature in enumerate(features):
    drawHistogram(target,x_feature)
    tem = features.copy()
    tem.pop(i)
    for j,y_feature in enumerate(tem):
        drawScatter(target,x_feature[0],y_feature[0],x_feature[1],y_feature[1])
    pass
pass


免責聲明!

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



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