当前位置: > > > Python - 机器学习算法库Scikit-Leran使用详解1(基本介绍、自带数据集)

Python - 机器学习算法库Scikit-Leran使用详解1(基本介绍、自带数据集)

一、基本介绍

1,什么是 Scikit-Leran ?

(1)Scikit-Leran 是一个基于 Python 语言的机器学习算法库。它主要用 Python 语言开发,建立在 NumPyScipyMatplotlib 之上,它提供了大量机器学习算法接口(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:城镇人均犯罪率
  • ZN5,000 平方英尺以上的住宅用地所占比例
  • INDUS:城镇非商业用地比例
  • CHASCharles River 流域土地面积比例
  • NOX:环境污染指数
  • RM:每栋住宅的房间数
  • AGE1940 年之前建造的自住单元的比例
  • 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