Iris flower数据集是1936年由Sir Ronald Fisher引入的经典多维数据集,可以作为判别分析(discriminant analysis)的样本。
该数据集包含Iris花的三个品种(Iris setosa, Iris virginica and Iris versicolor)各50个样本,
,Fisher利用这个数据集开发了一个线性判别模型来辨别花朵的品种。
每个样本还有4个特征参数(分别是萼片的长宽和花瓣的长宽,以厘米为单位)
sepal length (cm), sepal width (cm), petal length (cm), petal width (cm)
基于Fisher的线性判别模型,该数据集成为了机器学习中各种分类技术的典型实验案例
from sklearn import datasets
iris = datasets.load_iris()
irisFeatures = iris["data"]
irisFeaturesName = iris["feature_names"]
irisLabels = iris["target"]
print('Iris feature name:',irisFeaturesName)
print('Iris data size :',irisFeatures.shape)
print(irisFeatures[:10])
print('Iris label size :', irisLabels.shape)
print(irisLabels[:10])
Iris feature name: ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
Iris data size : (150, 4)
[[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]
[5. 3.6 1.4 0.2]
[5.4 3.9 1.7 0.4]
[4.6 3.4 1.4 0.3]
[5. 3.4 1.5 0.2]
[4.4 2.9 1.4 0.2]
[4.9 3.1 1.5 0.1]]
Iris label size : (150,)
[0 0 0 0 0 0 0 0 0 0]
import pandas as pd
print(irisFeaturesName)
dataset = pd.DataFrame(irisFeatures, columns=['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)'])
print(dataset.describe())
(sepal length)花萼长度最小值4.30, 最大值7.90, 均值5.84, 中位数5.80, 右偏
(sepal width)花萼宽度最小值2.00, 最大值4.40, 均值3.05, 中位数3.00, 右偏
(petal length)花瓣长度最小值1.00, 最大值6.90, 均值3.76, 中位数4.35, 左偏
(petal width)花瓣宽度最小值0.10, 最大值2.50, 均值1.20, 中位数1.30, 左偏
按中位数来度量: 花萼长度 > 花瓣长度 > 花萼宽度 > 花瓣宽度
sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)
count 150.000000 150.000000 150.000000 150.000000
mean 5.843333 3.057333 3.758000 1.199333
std 0.828066 0.435866 1.765298 0.762238
min 4.300000 2.000000 1.000000 0.100000
25% 5.100000 2.800000 1.600000 0.300000
50% 5.800000 3.000000 4.350000 1.300000
75% 6.400000 3.300000 5.100000 1.800000
max 7.900000 4.400000 6.900000 2.500000
boxplot所绘制的就是箱线图, 它能显示出一组数据的最大值, 最小值, 四分位数以及异常点.
对于异常点的定义: 区间[Q1-1.5IQR, Q3+1.5IQR]之外的点, 其中Q1下四分位数(25%), Q3上四分位数(75%), IQR=Q3-Q1
url = r"C:\Users\harry\PycharmProjects\helloworld\ML\DataSets_test\data\iris.csv"
names = ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)', 'class']
dataset = pd.read_csv(url, names=names)
print(dataset.describe())
dataset.plot.box()
plt.show()
import matplotlib.pyplot as plt
s = dataset.hist() # 数据直方图histograms
print(s)
plt.show()