Python - 机器学习算法库Scikit-Leran使用详解1(基本介绍、自带数据集)
作者:hangge | 2022-08-19 09:10
一、基本介绍
1,什么是 Scikit-Leran ?
(1)Scikit-Leran 是一个基于 Python 语言的机器学习算法库。它主要用 Python 语言开发,建立在 NumPy、Scipy 与 Matplotlib 之上,它提供了大量机器学习算法接口(API),因此我们可以把它看做一本“百科全书”。
(2)由于 Scikit-Learn 的存在极大地提高了机器学习的效率,让开发者无须关注数学层面的公式、计算过程,有更多的时间与精力专注于业务层面,从而解决实际的应用问题。
2,安装配置
(1)Scikit-Learn 安装也非常简单,执行以下命令即可安装:
pip install scikit-learn
(2)安装完成后导入 scikit 即可应用 Scikit-Learn:
import sklearn
二、内置的数据集
sklearn 库的 datasets 模块中自带了许多种类的内建数据集,比如波士顿房价数据集,手写数字识别数据集,鸢尾花数据集,糖尿病数据集等,这些数据集对我们学习机器学习算法提供了很好的帮助,节省了我们收集、整理数据集的时间。
数据集 | 获得方法 | 适用模型 |
---|---|---|
波士顿房价数据集 | load_boston() | 回归模型 |
鸢尾花数据集 | load_irir() | 分类模型 |
糖尿病数据集 | load_diabetes | 回归模型 |
手写数字识别数据集 | load_digits() | 分类模型 |
Linnerud数据集 | load_linnerud | 多输出回归模型 |
葡萄酒数据集 | load_wine() | 分类模型 |
乳腺癌数据集 | load_breast_cancer() | 分类模型 |
1,波士顿房价数据
(1)该数据集包含了 506 处波士顿不同地理位置的房产的房价数据(目标值),以及与之对应的包含房屋以及房屋周围的详细信息(特征值),其中包含城镇犯罪率、一氧化氮浓度、住宅平均房间数等 13 个维度的数据。因此,波士顿房价数据集能够应用到回归问题上。
13个特征值说明:
- CRIM:城镇人均犯罪率
- ZN:5,000 平方英尺以上的住宅用地所占比例
- INDUS:城镇非商业用地比例
- CHAS: Charles River 流域土地面积比例
- NOX:环境污染指数
- RM:每栋住宅的房间数
- AGE:1940 年之前建造的自住单元的比例
- DIS:距离五个波士顿就业中心的加权距离
- RAD:距离高速公路的便利指数
- TAX:每一万美元的不动产税率
- PTRATIO:城镇中教师学生比例
- B:城镇中黑人的比例
- LSTAT:城镇处于低生活水平人员比例
(2)下面样例对该数据进行加载并展示:
from sklearn.datasets import load_boston #加载数据集 import pandas as pd #导入pandas #加载波士顿房价数据集 boston = load_boston() x, y, name = boston['data'], boston['target'], boston['feature_names'] #x为特征,y为目标,name为特征名称 print('数据集共用%d个样本,%d个特征' % (x.shape[0], x.shape[1])) print('-----------------------------------------------------') print('数据集特征名称:\n', name) print('-----------------------------------------------------') print('前5条数据特征值:') # 将标签特征数据转化为datafram,更加直观的展现数据(这里只展示前5条数据) print(pd.DataFrame(x).head(5)) print('-----------------------------------------------------') print('前5条数据目标值:') print(pd.DataFrame(y).head(5))
2,鸢尾花数据
该数据集取自著名的统计学家 Fisher 的论文,适用于分类问题。数据集包含 3 个类,每个类 50 个实例,每条记录都有 4 项特征:花萼长度、花萼宽度、花瓣长度、花瓣宽度,可以通过这 4 个特征预测鸢尾花卉属于(iris-setosa, iris-versicolour, iris-virginica)中的哪一品种。
from sklearn.datasets import load_iris #加载数据集 import pandas as pd #导入pandas #加载数据集 iris = load_iris() x, y, name = iris['data'], iris['target'], iris['feature_names'] #x为特征,y为目标,name为特征名称 print('数据集共用%d个样本,%d个特征' % (x.shape[0], x.shape[1])) print('-----------------------------------------------------') print('数据集特征名称:\n', name) print('-----------------------------------------------------') print('前5条数据特征值:') # 将标签特征数据转化为datafram,更加直观的展现数据(这里只展示前5条数据) print(pd.DataFrame(x).head(5)) print('-----------------------------------------------------') print('前5条数据目标值:') print(pd.DataFrame(y).head(5))
3,糖尿病数据
该数据集包括 442 条样本数据,每条数据包含 10 个特征值,分别是年龄、性别、体重指数、平均血压和 6 个血清测量值。目标值为一年后患疾病的定量指标,因此适合与回归任务。
注意:10 个特征值中的每一个都已经平均居中并按标准偏差时间进行缩放 n_samples(即每列的平方和总计为 1)
from sklearn.datasets import load_diabetes #加载数据集 import pandas as pd #导入pandas #加载数据集 diabetes = load_diabetes() x, y, name = diabetes['data'], diabetes['target'], diabetes['feature_names'] #x为特征,y为目标,name为特征名称 print('数据集共用%d个样本,%d个特征' % (x.shape[0], x.shape[1])) print('-----------------------------------------------------') print('数据集特征名称:\n', name) print('-----------------------------------------------------') print('前5条数据特征值:') # 将标签特征数据转化为datafram,更加直观的展现数据(这里只展示前5条数据) print(pd.DataFrame(x).head(5)) print('-----------------------------------------------------') print('前5条数据目标值:') print(pd.DataFrame(y).head(5))
4,手写数字识别数据
(1)该数据集是结构化数据的经典数据,共有 1797 个样本,每个样本有 64 的元素,对应到一个 8x8 像素点组成的矩阵,每一个值是其灰度值,即控制每一个像素的黑白浓淡。该数据集包含 10 个类别,每个类别代表一个手写体数字(0-9)。
from sklearn.datasets import load_digits #加载数据集 import pandas as pd #导入pandas #加载数据集 digits = load_digits() x, y = digits['data'], digits['target'] #x为特征,y为目标 print('数据集共用%d个样本,%d个特征' % (x.shape[0], x.shape[1])) print('-----------------------------------------------------') print('前5条数据特征值:') # 将标签特征数据转化为datafram,更加直观的展现数据(这里只展示前5条数据) print(pd.DataFrame(x).head(5)) print('-----------------------------------------------------') print('前5条数据目标值:') print(pd.DataFrame(y).head(5))
(2)利用 matplotlib 我们可以通过灰度特征值绘制出数字图像,下面样例绘制出数据集中前 30 条数据:
from sklearn.datasets import load_digits #加载数据集 import pandas as pd #导入pandas import matplotlib.pyplot as plt #加载数据集 digits = load_digits() x, y = digits['data'], digits['target'] #x为特征,y为目标 #绘制数据集前30个数字 for i in range(30): plt.subplot(3, 10, i+1) plt.imshow(x[i].reshape(8, 8)) plt.show()
5,Linnerud 数据集
该数据集是一个多元回归数据集。它由从健身俱乐部的 20 名中年男性收集的三个运动数据:引体向上、仰卧起坐、跳远,和三个生理目标变量:体重、腰围、脉搏组成。
from sklearn.datasets import load_linnerud #加载数据集 import pandas as pd #导入pandas #加载数据集 linnerud = load_linnerud() x, y = linnerud['data'], linnerud['target'] #x为特征,y为目标 x_names, y_names = linnerud['feature_names'], linnerud['target_names'] #x_names为特征名称,y_names为目标名称 print('数据集共用%d个样本,%d个特征, %d个目标' % (x.shape[0], x.shape[1], y.shape[1])) print('-----------------------------------------------------') print('数据集特征名称:\n', x_names) print('-----------------------------------------------------') print('数据集目标名称:\n', y_names) print('-----------------------------------------------------') print('前5条数据特征值:') # 将标签特征数据转化为datafram,更加直观的展现数据(这里只展示前5条数据) print(pd.DataFrame(x).head(5)) print('-----------------------------------------------------') print('前5条数据目标值:') print(pd.DataFrame(y).head(5))
6,葡萄酒数据
该数据集一共包含 178 个样本数据,特征值为酒精、苹果酸、灰、灰分碱度等葡萄酒的十三种检测值,目标为预测属于三种葡萄酒中的哪一种。该数据集非常适合用来练习各种分类算法。
from sklearn.datasets import load_wine #加载数据集 import pandas as pd #导入pandas #加载数据集 wine = load_wine() x, y, name = wine['data'], wine['target'], wine['feature_names'] #x为特征,y为目标,name为特征名称 print('数据集共用%d个样本,%d个特征' % (x.shape[0], x.shape[1])) print('-----------------------------------------------------') print('数据集特征名称:\n', name) print('-----------------------------------------------------') print('前5条数据特征值:') # 将标签特征数据转化为datafram,更加直观的展现数据(这里只展示前5条数据) print(pd.DataFrame(x).head(5)) print('-----------------------------------------------------') print('前5条数据目标值:') print(pd.DataFrame(y).head(5))
7,乳腺癌(诊断)数据
该数据集包含了威斯康辛州记录的 569 个病人的乳腺癌数据,其特征是根据乳房肿块的细针穿刺 (FNA) 的数字化图像计算得出的 30 个细胞核特征:半径、纹理、周长等等。目标是预测癌症是良性还是恶性。因此这是个非常标准的二类判别数据集。
from sklearn.datasets import load_breast_cancer #加载数据集 import pandas as pd #导入pandas #加载数据集 cancer = load_breast_cancer() x, y, name = cancer['data'], cancer['target'], cancer['feature_names'] #x为特征,y为目标,name为特征名称 print('数据集共用%d个样本,%d个特征' % (x.shape[0], x.shape[1])) print('-----------------------------------------------------') print('数据集特征名称:\n', name) print('-----------------------------------------------------') print('前5条数据特征值:') # 将标签特征数据转化为datafram,更加直观的展现数据(这里只展示前5条数据) print(pd.DataFrame(x).head(5)) print('-----------------------------------------------------') print('前5条数据目标值:') print(pd.DataFrame(y).head(5))
全部评论(0)