· 数据初识
鸢尾花分类是一个经典的机器学习应用。
假设一个植物爱好者观察了很多鸢尾花,并记录了这些花的数据(花瓣长度、宽度以及花萼的长度、宽度),并且一直这些花都属于于setosa、 versicolor 或 virginica 三个品种之一。现在需要根据记录的数据预测花的种类。
因为这是一个经典的数据集,所以在 scikit-learn 的 datasets 模块中。我们可以调用 load_iris 函数来加载数据:
from sklearn.datasets import load_iris
iris_dataset = load_iris()
print("Keys of iris_dataset: \n{}".format(iris_dataset.keys()))
得到结果:
Keys of iris_dataset:
dict_keys(['data', 'target', 'target_names', 'DESCR', 'feature_names', 'filename'])
我们再分别把这几个key下的数据打印出来,首先是data,由于data太多了,所以我们只打印出了前五个:
print("first 5 data: \n{}".format(iris_dataset['data'][:5]))
得到结果如下,应该是分别对应的花瓣长度、宽度,花萼长度、宽度:
first 5 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]
[5. 3.6 1.4 0.2]]
然后是target,和target_names:
print("target: \n{}".format(iris_dataset['target']))
print("target_names: \n{}".format(iris_dataset['target_names']))
得到的结果如下,0、1、2应该是对应着三种花:
target:
[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 0
0 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 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 1 1 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 2 2 2 2 2 2 2 2 2 2 2 2 2
2 2]
target_names:
['setosa' 'versicolor' 'virginica']
DESCR是对数据集的说明,我就不展示了。最后看看feature_names,和filename:
print("feature_names: \n{}".format(iris_dataset['feature_names']))
print("filename: \n{}".format(iris_dataset['filename']))
我们可以知道是哪四种属性以及记录数据的CSV的地址,得到结果如下:
feature_names:
['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
filename:
C:\Anaconda\lib\site-packages\sklearn\datasets\data\iris.csv