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

本文涉及的产品
函数计算FC,每月15万CU 3个月
简介: 八十四、【机器学习】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



相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
3月前
|
机器学习/深度学习 数据采集 数据挖掘
实战派教学:掌握Scikit-learn,轻松实现数据分析与机器学习模型优化!
【10月更文挑战第4天】Scikit-learn凭借高效、易用及全面性成为数据科学领域的首选工具,简化了数据预处理、模型训练与评估流程,并提供丰富算法库。本文通过实战教学,详细介绍Scikit-learn的基础入门、数据预处理、模型选择与训练、评估及调优等关键步骤,助你快速掌握并优化数据分析与机器学习模型。从环境搭建到参数调优,每一步都配有示例代码,便于理解和实践。
114 2
|
2月前
|
机器学习/深度学习 数据采集 数据处理
Scikit-learn Pipeline完全指南:高效构建机器学习工作流
Scikit-learn管道是构建高效、鲁棒、可复用的机器学习工作流程的利器。通过掌握管道的使用,我们可以轻松地完成从数据预处理到模型训练、评估和部署的全流程,极大地提高工作效率。
42 2
Scikit-learn Pipeline完全指南:高效构建机器学习工作流
|
2月前
|
机器学习/深度学习 数据采集
机器学习入门——使用Scikit-Learn构建分类器
机器学习入门——使用Scikit-Learn构建分类器
|
2月前
|
机器学习/深度学习 数据采集 算法
Python机器学习:Scikit-learn库的高效使用技巧
【10月更文挑战第28天】Scikit-learn 是 Python 中最受欢迎的机器学习库之一,以其简洁的 API、丰富的算法和良好的文档支持而受到开发者喜爱。本文介绍了 Scikit-learn 的高效使用技巧,包括数据预处理(如使用 Pipeline 和 ColumnTransformer)、模型选择与评估(如交叉验证和 GridSearchCV)以及模型持久化(如使用 joblib)。通过这些技巧,你可以在机器学习项目中事半功倍。
62 3
|
2月前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
机器学习基础:使用Python和Scikit-learn入门
37 1
|
2月前
|
机器学习/深度学习 数据采集 人工智能
机器学习入门:Python与scikit-learn实战
机器学习入门:Python与scikit-learn实战
63 0
|
3月前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
【10月更文挑战第12天】本文介绍了如何使用Python和Scikit-learn进行机器学习的基础知识和入门实践。首先概述了机器学习的基本概念,包括监督学习、无监督学习和强化学习。接着详细讲解了Python和Scikit-learn的安装、数据处理、模型训练和评估等步骤,并提供了代码示例。通过本文,读者可以掌握机器学习的基本流程,并为深入学习打下坚实基础。
29 1
|
3月前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
本文介绍了如何使用Python和Scikit-learn进行机器学习的基础知识和实践。首先概述了机器学习的基本概念,包括监督学习、无监督学习和强化学习。接着详细讲解了Python和Scikit-learn的安装、数据处理、模型选择与训练、模型评估及交叉验证等关键步骤。通过本文,初学者可以快速上手并掌握机器学习的基本技能。
71 2
|
3月前
|
机器学习/深度学习 数据挖掘 Serverless
手把手教你全面评估机器学习模型性能:从选择正确评价指标到使用Python与Scikit-learn进行实战演练的详细指南
【10月更文挑战第10天】评估机器学习模型性能是开发流程的关键,涉及准确性、可解释性、运行速度等多方面考量。不同任务(如分类、回归)采用不同评价指标,如准确率、F1分数、MSE等。示例代码展示了使用Scikit-learn库评估逻辑回归模型的过程,包括数据准备、模型训练、性能评估及交叉验证。
149 1
|
3月前
|
机器学习/深度学习 人工智能 数据挖掘
机器学习基础:使用Python和Scikit-learn入门
【10月更文挑战第6天】在人工智能领域,机器学习已成为核心技术。本文指导初学者使用Python与Scikit-learn入门机器学习,涵盖基本概念、环境搭建、数据处理、模型训练及评估等环节。Python因简洁性及其生态系统成为首选语言,而Scikit-learn则提供了丰富工具,简化数据挖掘与分析流程。通过实践示例,帮助读者快速掌握基础知识,为进一步深入研究奠定坚实基础。
36 4