八十四、【机器学习】Scikit-learn

本文涉及的产品
简介: 八十四、【机器学习】Scikit-learn

Scikit-learn 简介


 Python之所以能在数据科学与人工智能应用领域中占有重要位置,不仅是因为其免费开源易数据处理,更重要的是它还提供了丰富且功能强大的机器学习模型与算法程序包。本篇主要介绍Python中的机器学习包:Scikit-learn,包括其经典模型原理及实现方法,从而帮助读者掌握其基本理论,并付诸于实践应用。


 Scikit-learn 是机器学习领域非常热门的一个开源包,它整合了众多机器学习算法,基于Python语言编写而成,可以免费使用。


Scikit-learn基本功能主要分为六大部分:分类、回归、聚类、数据降维、模型选择和数据预处理。


模型与方法


Scikit-learn 的主要模型及其使用方法,内容如下:


1.数据预处理。主要介绍缺失值的均值、中位数、最频繁值填充方法,数据的均值-方差、极差规范化方法。

2.数据降维。主要介绍主成分分析方法,本章中也将其归为数据预处理部分。

3.回归。主要介绍常用的线性回归、神经网络非线性回归。

4.分类。主要介绍支持向量机、逻辑回归、神经网络分类方法。

5.聚类。主要介绍常用的K-均值聚类算法。

6.模型选择。这部分主要通过实际案例过程中不同模型之间的比较来实现模型选择。


       在Anaconda发行版中已经集成了Scikit-learn分析包,无需再进行安装,在Spyder脚本文件中直接导入即可使用。由于Scikit-learn包的内容非常多,我们在使用过程中导入相关的模块即可,无需整个机器学习包都导进去,如图所示:


21.png


        图中显示了在temp.py脚本文件中导入了包括数据预处理(缺失值填充、均值-方差规范化、极差法规范化、主成分分析)、线性回归、逻辑回归、神经网络(分类和回归)、支持向量、K-均值聚类相关模块。


数据预处理


 在实际数据挖掘分析中,数据预处理是必不可少的环节,甚至会占用到整个任务的60%以上的时间。同时经过数据预处理,能保障数据的质量,从而减少模型的误差。


数据挖掘分析中有一句至理名言:“垃圾进,垃圾出”,也就是说如果数据质量得不到保障,模型挖掘出来的结果也没有实际的使用价值。因此在数据挖掘分析任务中,需要特别注意数据的预处理。本小节中,我们介绍的数据预处理方法包括:


缺失值处理

数据的规范化

属性规约(主成分分析)


缺失值处理


      在数据处理过程中缺失值是常见的,需要对其进行处理。前面已经介绍过利用pandas包中的fillna函数,可以对缺失值进行填充。但是这种填充方法通过指定值进行填充,没有充分利用数据集中的信息。为了克服这种填充方法的缺点,这里介绍Scikit-learn包中能充分利用数据信息的三种常用填充策略,即均值填充、中位数填充和最频繁值填充。这里填充方式有两种:按行和按列。所谓按行或者按列均值填充策略,就是对某行或者某列中的所有缺失值用该行或者该列中非缺失部分的值的平均值来表示;中位数填充策略和最频繁值填充策略类似,即取某行或某列中非缺失部分的值的中位数和出现频次最多的值来代替其缺失值。


      在介绍填充策略之前,我们先定义待填充的数据变量data、c、C,其中data变量通过读取本书案例资源中的Excel数据文件“missing.xlsx”获得,示例代码如下:


 

import pandas as pd
        import numpy as np
        data=pd.read_excel('missing.xlsx')                        #数据框data
        c=np.array([[1,2,3,4],[4,5,6,np.nan],[5,6,7,8],[9,4,np.nan,8]])   #数组c
        C=pd.DataFrame(c)                                    #数据框C

22.png


      需要注意的是,填充的数据结构要求为数组或者数据框,元素则要求为数值类型。因此data数据中的b列不能进行填充。使用Scikit-learn中的数据预处理模块进缺失值填充的基本步骤如下:


1、导入数据预处理中的填充模块Imputer,其命令如下:


from sklearn.preprocessing import Imputer

2、利用Imputer创建填充对象imp,其命令如下:


imp = Imputer(missing_values=‘NaN’, strategy=‘mean’, axis=0) #创建按列均值填充策略对象。

其中对象参数说明如下:


******strategy:均值(mean)、中位数(median)、最频繁值(most_frequent)三种填充策略

******axis=0:按列填充方式


******axis=1:按行填充方式


调用填充对象imp中的fit()拟合方法,对待填充数据进行拟合训练,其命令如下:


imp.fit(Data)  #Data为待填充数据集变量

调用填充对象imp中的transform()方法,返回填充后的数据集了,其命令如下:

FData=imp.transform(Data) #返回填充后的数据集FData

下面对C数据框中的数据采用按列均值填充策略、对c数组中的数据采用按行中位数填充策略、对data数据中的a、c列采用按列最频繁值填充策略进行填充。示例代码和执行结果如下:


# 1.均值填充策略
from sklearn.preprocessing import Imputer 
fC=C 
imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
imp.fit(fC)
fC=imp.transform(fC)

执行结果如图:


23.png


# 2.中位数填充策略
imp = Imputer(missing_values='NaN', strategy='median', axis=1)
fc=c
imp.fit(fc)
fc=imp.transform(fc)

24.png


# 3.最频繁值填充策略
fD=data[['a','c']]
imp = Imputer(missing_values='NaN', strategy='most_frequent', axis=0)
imp.fit(fD)
fD=imp.transform(fD)


25.png

数据规范化


       由于变量或指标的单位不同,造成有些指标数据值非常大,而有些非常小,在模型运算过程中大的数据会把小的数据覆盖掉,造成模型失真。因此,需要对这些数据做规范化处理,或者说去量纲化。这里介绍两种常用的规范化处理方法:均值-方差规范化、极差规范化。


      所谓均值-方差规范化,是指变量或指标数据减去其均值再除以标准差得到的新的数据。新的数据均值为0,方差为1,其公式如下:


𝑥∗=𝑥−𝑚𝑒𝑎𝑛(𝑥)𝑠𝑡𝑑(𝑥)x^∗=(x-mean(x))/(std(x))


      而极差规范化是指变量或者指标数据减去其最小值再除以最大最小值之差得到的新的数据。新的数据取值范围在[0,1]之间,其计算公式为:


𝑥∗=𝑥−min⁡(𝑥)max𝑥−min⁡(𝑥)x^∗=(x-min⁡(x))/(max⁡(x)-min⁡(x))


      在介绍规范化方法之前,先将待规范化数据文件读入Python中。该数据文件在本书案例资源包中,它是一个Python格式的二进制数据文件,文件名为“data.npy”,可以采用Numpy包中的load函数读取,示例代码如下:


import numpy as np
data=np.load('data.npy')
data=data[:,1:]

26.png


       从图中可以看出,数据存在空值(NAN值),在进行规范化之前需要先对其进行填充处理,这里采用按列均值填充策略进行填充,示例代码如下:


from sklearn.preprocessing import Imputer
imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
imp.fit(data)
data=imp.transform(data)

27.png


        如图所示为填充后的数据,其变量名仍然为data。为了区分,记X=data,X1=data,对X作均值-方差规范化处理,对X1作0-1规范化处理。下面分别对两种规范化方法进行介绍。


首先对X做均值-方差规范化处理,步骤如下:


1.导入均值-方差规范化模块StandardScaler
from sklearn.preprocessing import StandardScaler
2.利用StandardScaler创建均值-方差规范化对象scaler
scaler = StandardScaler()
3.调用scaler对象中的fit()拟合方法,对待处理的数据X进行拟合训练
scaler.fit(X) 
4.调用scaler对象中的transform()方法,返回规范化后的数据集X(覆盖原未规范化的X)
X=scaler.transform(X)

对填充后的数据X1做0-1规范化处理


示例代码如下:


from sklearn.preprocessing import MinMaxScaler   
X1=data
min_max_scaler = MinMaxScaler()
min_max_scaler.fit(X1)
X1=min_max_scaler.transform(X1)
执行结果如图5-9所示。

28.png



相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
21天前
|
机器学习/深度学习 数据采集 Python
Python机器学习面试:Scikit-learn基础与实践
【4月更文挑战第16天】本文探讨了Python机器学习面试中Scikit-learn的相关重点,包括数据预处理(特征缩放、缺失值处理、特征选择)、模型训练与评估、超参数调优(网格搜索、随机搜索)以及集成学习(Bagging、Boosting、Stacking)。同时,指出了常见错误及避免策略,如忽视数据预处理、盲目追求高精度、滥用集成学习等。掌握这些知识点和代码示例,能帮助你在面试中展现优秀的Scikit-learn技能。
32 5
|
8天前
|
机器学习/深度学习 数据采集 监控
Scikit-learn机器学习
【5月更文挑战第3天】Scikit-learn是一个基于NumPy、SciPy和Matplotlib的Python机器学习库,提供数据预处理到模型评估的全套工具。支持监督学习、无监督学习和降维等任务。要安装Scikit-learn,运行`pip install scikit-learn`。流程包括:数据准备(如加载鸢尾花数据集并划分训练测试集)、选择模型(如SVM分类器)、模型训练、模型评估(计算准确度)、特征工程和数据预处理(如特征缩放)、超参数调优(如Grid Search CV)、模型可视化(如混淆矩阵)和部署。
25 3
|
10天前
|
机器学习/深度学习 数据采集 算法
【Python机器学习专栏】使用Scikit-learn进行数据编码
【4月更文挑战第30天】本文介绍了Python Scikit-learn库在机器学习数据预处理中的作用,尤其是数据编码。数据编码将原始数据转化为算法可理解的格式,包括标签编码(适用于有序分类变量)、独热编码(适用于无序分类变量)和文本编码(如词袋模型、TF-IDF)。Scikit-learn提供LabelEncoder和OneHotEncoder类实现这些编码。示例展示了如何对数据进行标签编码和独热编码,强调了正确选择编码方法的重要性。
|
11天前
|
机器学习/深度学习 算法 数据挖掘
机器学习--K近邻算法,以及python中通过Scikit-learn库实现K近邻算法API使用技巧
机器学习--K近邻算法,以及python中通过Scikit-learn库实现K近邻算法API使用技巧
|
12天前
|
机器学习/深度学习 人工智能 算法
|
23天前
|
机器学习/深度学习 监控 数据可视化
Scikit-learn与可视化:让机器学习结果更直观
【4月更文挑战第17天】本文探讨了如何使用Scikit-learn和可视化工具使机器学习结果更直观。Scikit-learn作为Python的开源机器学习库,结合Matplotlib、Seaborn等可视化库,便于数据探索、模型训练过程监控及结果展示。通过示例代码,展示了数据探索的pairplot、模型训练准确率曲线的绘制以及聚类结果的散点图,强调了可视化在提升模型理解度和应用普及性上的作用。随着可视化技术进步,机器学习将变得更直观易懂。
|
23天前
|
机器学习/深度学习 算法 数据处理
构建自定义机器学习模型:Scikit-learn的高级应用
【4月更文挑战第17天】本文探讨了如何利用Scikit-learn构建自定义机器学习模型,包括创建自定义估计器、使用管道集成数据处理和模型、深化特征工程以及调优与评估模型。通过继承`BaseEstimator`和相关Mixin类,用户可实现自定义算法。管道允许串联多个步骤,而特征工程涉及多项式特征和自定义变换。模型调优可借助交叉验证和参数搜索工具。掌握这些高级技巧能提升机器学习项目的效果和效率。
|
23天前
|
机器学习/深度学习 数据采集 数据可视化
探秘scikit-learn:机器学习库的核心功能详解
【4月更文挑战第17天】探索scikit-learn,Python机器学习库,涵盖数据预处理(如标准化、归一化)、模型选择(分类、回归、聚类等)、模型训练、评估与优化(交叉验证、网格搜索)、流水线和集成学习,以及可视化和解释性工具。这个库简化了复杂项目,助力用户高效构建和理解机器学习模型,适合各水平学习者提升技能。
|
29天前
|
机器学习/深度学习 数据采集 算法
机器学习与Python:使用Scikit-learn进行预测分析
【4月更文挑战第12天】本文介绍了Python的Scikit-learn库在机器学习中的应用,它提供丰富的算法如分类、回归和聚类。预测分析步骤包括:数据准备(使用Pandas处理)、数据划分、选择模型(如线性回归)、训练、模型评估(如均方误差)和优化。文章还给出了股票价格预测和贷款违约预测的实际案例,强调了通过Scikit-learn进行预测分析的学习与实践的重要性。
|
1月前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
【4月更文挑战第9天】本文介绍了使用Python和Scikit-learn进行机器学习的基础知识和入门实践。首先,简述了机器学习的基本概念和类型。接着,展示了如何安装Python和Scikit-learn,加载与处理数据,选择模型进行训练,以及评估模型性能。通过本文,读者可了解机器学习入门步骤,并借助Python和Scikit-learn开始实践。

热门文章

最新文章