Python数据分析基础技术之scikit-learn(史上最全面)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_42415326/article/details/89739212

1、scikit-learn 简介

scikit-learn (sklearn) 是基于 Python 语言的机器学习工具。

是简单高效的数据挖掘和数据分析工具

可供大家在各种环境中重复使用

建立在 NumPy ,SciPy 和 matplotlib 上

开源,可商业使用 - BSD许可证

sklearn可以实现数据预处理、分类、回归、降维、模型选择等常用的机器学习算法。sklearn是基于NumPy, SciPy, matplotlib的。

NumPy:NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。。

SciPy :scipy是一个用于数学、科学、工程领域的常用软件包,可以处理插值、积分、优化、图像处理、常微分方程数值解的求解、信号处理等问题

matplotlib :Matplotlib 是 Python 的绘图库,仅需要几行代码,便可以生成直方图、功率谱、条形图、错误图、散点图等。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。 它也可以和图形工具包一起使用,如 PyQt 和 wxPython。

2、安装 scikit-learn最新版本

Scikit-learn 要求:

Python (>= 2.7 or >= 3.3),
NumPy (>= 1.8.2),
SciPy (>= 0.13.3).

如果你已经有一个安全的 numpy 和 scipy,安装 scikit-learn 最简单的方法是使用pip

pip install -U scikit-learn

在这里插入图片描述
pip 是一个Python包管理工具,主要是用于安装 PyPI 上的软件包。如果你安装的Python 2 >=2.7.9 或者Python 3 >=3.4 python自带了pip,所以不用安装。可以用 pip list命令查看安装了哪些python包。
在这里插入图片描述

或者你是在Anaconda环境下,可以使用conda

conda install scikit-learn

pip 升级和卸载操作仅适用于通过 pip install 安装的软件包;升级或卸载使用 Anaconda 安装的 scikit-learn要用conda命令:

升级 scikit-learn:conda update scikit-learn
卸载 scikit-learn:conda remove scikit-learn

使用 pip install -U scikit-learn 升级 or pip uninstall scikit-learn 卸载 可能无法正确删除 conda 命令安装的文件

3、使用 scikit-learn 介绍机器学习

机器学习是什么?

一般来说,一个学习问题通常会考虑一系列 n 个 样本 数据,然后尝试预测未知数据的属性。 如果每个样本是 多个属性的数据 (比如说是一个多维记录),就说它有许多“属性”,或称 features(特征) 。

我们可以将学习问题分为以下几大类:

有监督学习:其中数据带有一个附加属性,即我们想要预测的结果值

分类:样本属于两个或更多个类,我们想从已经标记的数据中学习如何预测未标记数据的类别。 分类问题的一个例子是手写数字识别,其目的是将每个输入向量分配给有限数目的离散类别之一。 我们通常把分类视作监督学习的一个离散形式(区别于连续形式),从有限的类别中,给每个样本贴上正确的标签。

回归:如果期望的输出由一个或多个连续变量组成,则该任务称为 回归 。 回归问题的一个例子是预测鲑鱼的长度是其年龄和体重的函数。

无监督学习:其中训练数据由没有任何相应目标值的一组输入向量x组成。这种问题的目标可能是在数据中发现彼此类似的示例所聚成的组,这种问题称为 聚类 , 或者,确定输入空间内的数据分布,称为 密度估计 ,又或从高维数据投影数据空间缩小到二维或三维以进行可视化

训练集和测试集
机器学习是从数据的属性中学习,并将它们应用到新数据的过程。 这就是为什么机器学习中评估算法的普遍实践是把数据集分割成训练集 (我们从中学习数据的属性)和 测试集 (我们测试这些性质)。

我们来加载一个栗子数据集

scikit-learn自带几个标准数据集。例如,用于分类的iris和digits数据集,和用于回归的波士顿房价数据集。下面,我们从cmd命令处理程序启动python解释器,练习加载iris和digits数据集。
在这里插入图片描述
python环境中的数据集是一个类似字典的对象,它保存有关数据的所有数据和一些元数据。 该数据存储在 .data 成员中,它是 n_samples(样本), n_features (特征)数组。 在监督问题的情况下,一个或多个响应变量存储在 .target 成员中。
例如,在数字数据集的情况下,digits.data 使我们能够得到一些用于分类的样本特征:
在这里插入图片描述
并且 digits.target 表示了数据集内每个数字的真实类别,也就是我们期望从每个手写数字图像中学得的相应的数字标记:
在这里插入图片描述
数据数组的形状
数据总是二维数组,形状为 (n_samples, n_features) ,尽管原始数据可能具有不同的形状。 在数字的情况下,每个原始样本是形状 (8, 8) 的图像,可以使用以下方式访问:
在这里插入图片描述
如何加载外部数据集?
scikit-learn将任何数值型数据存储为numpy数组或scipy稀疏矩阵。其它可以转换为numpy数组的类型也可以。下面介绍几种推荐的数据加载方式:

1、pandas.io提供了一组工具,利用它们读取包括CSV, Excel, JSON, SQL等常见格式的数据集。pandas很适合处理不同类型的数据,并且能够把这些数据转为适合的数值数组。

2、scipy.io专门处理在科学计算中常用的二进制形式,例如,.mat, .arff

3、numpy/routines.io是列形数据进入numpy数组的标准加载形式。

4、scikit-learn的datasets.load_files函数作为文本文件的字典加载形式。在这种加载形式,每一个字典名是每一个类的名,而字典里的每一个文件则对应来自该类的一个样本。

提示: 如果在管理自己的数值型数据时,我们推荐使用一个优化过的文件格式,例如,HDF5, 这样可以减少数据加载时间。当你加载的外部数据很大时,这种方式尤其有用。 不同的python库,例如,H5Py, PyTables, pandas都提供读写HDF5格式的数据的接口。

猜你喜欢

转载自blog.csdn.net/qq_42415326/article/details/89739212
今日推荐