第一章学习内容整理_加载样本数据&绘制散点图
01 常用包说明
python可以解决很多问题,相应解决方案使用的包也很多,不太好记忆.
为了便于记忆,用大白话简单描述一下各个包的功能.
# 科学计算最基础的包
# 本质就是个多维数组, 里面包含了一些操作数组的功能函数, 机器学习一切的起源
import numpy as np
# 以numpy为基础,封装的各种高级数学函数
import scipy
# 将各种数据已表单形式存储&表达, 可以直接使用numpy的数据
# 虽然同numpy都是数据集合, 但numpy侧重的是多为数组, 而且数据类型必须都一致
# pandas则侧重数据的集合,简单理解就是想象成excel表格
import pandas as pd
# 绘图工具 可以直接使用numpy的数据格式进行绘图
import matplotlib
# 交互式python
# 通常我们在cmd执行python后,进入python环境,编码是没有语法提醒的.
# Ipython下则可以提供语法提醒
import IPython
# ---------------
# 以下可以简单记忆, xxxxlearn表示各种机器学习用的包
# 机器学习的基础库, 里面有免费的学习数据, 实例中用的就是这个包里的数据
import sklearn
# 机器学习绘图库
import mglearn
02 从一个例子开始说起
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
import pandas as pd
import mglearn
import matplotlib.pyplot as pt
iris_dataset = load_iris()
X_train, X_test, y_train, y_test = \
train_test_split(iris_dataset['data'],
iris_dataset['target'], random_state=0)
iris_dataframe = pd.DataFrame(X_train, columns=iris_dataset.feature_names)
pd.plotting.scatter_matrix(iris_dataframe, c=y_train, figsize=(15, 15), marker='o',
hist_kwds={
'bins': 20}, s=60, alpha=.8, cmap=mglearn.cm3)
pt.show()
如果你跟我一样,看的一头雾水,说明咱们是一个段位的,接下来我们就尝试搞懂这段程序.
先把程序功能简单说明一下,也好带着问题看程序.
功能:
- 使用机器学习包中提供的数据样本,创建学习用数据和测试用数据
- 使用学习数据创建数据表格模板
- 使用测试数据测验证数据表格是否能正常识别数据
- 通过绘图来显示测试结果
接下来我们尝试分段来研究这段程序:
02_001 引入包的说明
# sklearn为机器学习基础包, 其下的datasets中提供了一些免费使用的数据样本,
# load_iris是样本中关于鸢尾花建模的数据样本
from sklearn.datasets import load_iris
# train_test_split可以将sklearn的数据拆分
# 默认情况下会将一份数据拆分成 75%的建模用数据 和 25%的测试用数据
from sklearn.model_selection import train_test_split
# panda中提供数据的绘图功能
# 直接用matplotlib不行吗? 一般来说数据在成图之前都会做一些设置,中间多一曾panda缓冲
# 能解决绝大部分问题
import pandas as pd
# 虽然panda提供了绘图功能,但是主职并不是绘图,以此也不能完成复杂的配图方案.
# mglearn是专门应对绘图的包,里面有很多视图配色方案,
# 各种现成的数据视图,本着不重复造轮子的宗旨,建议绘图时选择mglearn
# 另外需要注意的是: mglearn只是做成绘图用的数据
import mglearn
# 绘制图片的主要函数
import matplotlib.pyplot as pt
02_002 使用机器学习包中提供的数据样本,创建学习用数据和测试用数据
- 加载数据样本:
# 加载鸢尾花数据包, 加载后的数据格式类似于dict
iris_dataset = load_iris()
print(type(iris_dataset))
>>> <class 'sklearn.utils.Bunch'>
iris_dataset.keys()
>>> dict_keys(['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names', 'filename', 'data_module'])
# 说明一下这个数据包中各个key的作用:
# =='data'==
# 用于存放测量数据 可以看出这个例子的数据是二维数组
>>> iris_dataset.data
array([[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],
....
])
# 二维数组的形状
# 一维表示测试数据的个数
# 二维表示每个测试数据的特征具体值
>>> iris_dataset.data.shape
(150, 4)
# =='feature_names'==
# 用于存放特征信息. 特征个数跟data中的二维数据个数应当是一样的.
>>> iris_dataset.feature_names
['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
# =='target_names'==
# 单个所有特征信息汇总后最终会得到一个结论, target_names就是存放最终的结论,
# 本例中所有数据共分为三类.
>>> iris_dataset.target_names
array(['setosa', 'versicolor', 'virginica'], dtype='<U10')
# =='target'==
# 存放每个数据 特征汇总后所指向的结论, 为了节省内存,
# 没有直接写名字,而是使用target_names中的位置信息来描述结论
>>> iris_dataset.target
array([0, 0