这里我们介绍一下如何从skit-learn自带的数据库总加载数据,结合之前的学习,玩一些数据,进行可视化展示。为我们后面进行机器学习做一些预热。
我们前面已经学习了numpy和matplotlib这两个库,这里我们只需再导入skit-learn,这里我们先不全部都导入,只需要导入他的 数据模块即可
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
from sklearn import datasets
其实在datasets里面包含了很多的数据
这里我们先对其中的鸢尾花数据进行分析
我们首先获取数据
iris = datasets.load_iris()
现在iris中保存的就是鸢尾花的所有数据,但是其实我们现在获取到的数据是skit-learn已经封装好的一个鸢尾花的数据,他将数据做成了字典,我们可以看看他都分了哪些。
iris.keys()
Out[7]: dict_keys(['data', 'target', 'target_names', 'DESCR', 'feature_names', 'filename'])
[data’, ‘target’, ‘target_names’, ‘DESCR’, ‘feature_names’, ‘filename’]
数据 数据对应的标签 标签的名称 对数据的描述 特征
这里为了更好的理解数据,我们可以通过print(iris.DESCR) 查看数据的说明文档
print(iris.DESCR)
.. _iris_dataset:
Iris plants dataset
--------------------
**Data Set Characteristics:**
:Number of Instances: 150 (50 in each of three classes)数量
:Number of Attributes: 4 numeric, predictive attributes and the class特征数量
:Attribute Information:特征
- sepal length in cm
- sepal width in cm
- petal length in cm
- petal width in cm
- class:种类
- Iris-Setosa
- Iris-Versicolour
- Iris-Virginica
:Summary Statistics:
============== ==== ==== ======= ===== ====================
Min Max Mean SD Class Correlation
============== ==== ==== ======= ===== ====================
sepal length: 4.3 7.9 5.84 0.83 0.7826
sepal width: 2.0 4.4 3.05 0.43 -0.4194
petal length: 1.0 6.9 3.76 1.76 0.9490 (high!)
petal width: 0.1 2.5 1.20 0.76 0.9565 (high!)
============== ==== ==== ======= ===== ====================
要想查看具体的值,我们可以通过变量直接分别获取到具体的,大家可以看看,认识一下数据
iris.data
iris.data.shape
iris.target
iris.target_names
iris.feature_names
下面为了更加直观的看懂数据,我们可以先对数据进行一个可视化
我们知道要使用matplotlib绘制时候,需要二维的坐标,所以我们先对数据进行一个处理
X=iris.data[:,:2]
X.shape
Out[18]: (150, 2)
plt.scatter(X[:,0],X[:,1])
plt.show()
虽然所有的点都展示在图上了,但是我们并不知道哪些点属于同一类。那么怎么区分这些点属于哪一类鸢尾花呢?我们知道在数据中有target这个标签。是对数据已经划分好了结果。我们需要将这个数据利用起来
y=iris.target
plt.scatter(X[y==0,0],X[y==0,1],color='red')
plt.scatter(X[y==1,0],X[y==1,1],color='blue')
plt.scatter(X[y==2,0],X[y==2,1],color='green')
plt.show()
可以看到,我们使用faceindex的方式对数据进行了一个区分,将不同的花区分开来。我们再对点的样式进行一下设置,通过设置marker达到目的
plt.scatter(X[y==0,0],X[y==0,1],color='red',marker='o')
plt.scatter(X[y==1,0],X[y==1,1],color='blue',marker='+')
plt.scatter(X[y==2,0],X[y==2,1],color='green',marker='*')
plt.show()
这样我们就实现了不同的类别使用不同的颜色和不用的样式进行表示。散点的样式选择,大家可以查阅官方文档。
现在我们其实是对数据中的前两个特征进行绘制,就是萼片的长度和宽度。从图上来看,我们可以发现,其中一类是很明显自成一类,但是另外的两类却不太容易区分,交叉的数据挺多的。如果我们另外两个特征进行展示回是如何呢?
X = iris.data[:,2:] 取后两列
plt.scatter(X[y==0,0],X[y==0,1],color='red',marker='o')
plt.scatter(X[y==1,0],X[y==1,1],color='blue',marker='+')
plt.scatter(X[y==2,0],X[y==2,1],color='green',marker='*')
plt.show()
我们可以看到第一类依旧容易区分,但是对二三类也可以看到区别。
到这里我们也就完成了学习。
大家准备开始学习机器学习算法吧。