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

本文涉及的产品
函数计算FC,每月免费额度15元,12个月
简介: 八十四、【机器学习】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 架构模式
相关文章
|
4天前
|
机器学习/深度学习 人工智能 算法
如何使用Scikit-learn在Python中构建一个机器学习分类器
如何使用Scikit-learn在Python中构建一个机器学习分类器
10 3
|
24天前
|
机器学习/深度学习 算法 数据挖掘
从菜鸟到大师:Scikit-learn库实战教程,模型训练、评估、选择一网打尽!
【7月更文挑战第26天】在数据科学领域, Scikit-learn是初学者通往专家之路的必备工具。
32 5
|
24天前
|
机器学习/深度学习 数据采集 数据挖掘
智能决策新引擎:Python+Scikit-learn,打造高效数据分析与机器学习解决方案!
【7月更文挑战第26天】在数据驱动时代,企业需从大数据中提取价值以精准决策。Python凭借丰富的库成为数据分析利器,而Scikit-learn作为核心工具备受青睐。本文通过电商案例展示如何预测潜在买家以实施精准营销。首先进行数据预处理,包括清洗、特征选择与转换;接着采用逻辑回归模型进行训练与预测;最后评估模型并优化。此方案显著提升了营销效率和企业决策能力,预示着智能决策系统的广阔前景。
38 2
|
24天前
|
机器学习/深度学习 数据采集 算法
数据海洋中的导航者:Scikit-learn库引领Python数据分析与机器学习新航向!
【7月更文挑战第26天】在数据的海洋里,Python以强大的生态成为探索者的首选,尤其Scikit-learn库(简称sklearn),作为一颗璀璨明珠,以高效、灵活、易用的特性引领数据科学家们破浪前行。无论新手还是专家,sklearn提供的广泛算法与工具支持从数据预处理到模型评估的全流程。秉承“简单有效”的设计哲学,它简化了复杂模型的操作,如线性回归等,使用户能轻松比较并选择最优方案。示例代码展示了如何简洁地实现线性回归分析,彰显了sklearn的强大能力。总之,sklearn不仅是数据科学家的利器,也是推动行业进步的关键力量。
34 3
|
1月前
|
机器学习/深度学习 数据采集 数据挖掘
深入Scikit-learn:掌握Python最强大的机器学习库
【7月更文第18天】在当今数据驱动的世界中,机器学习已成为解锁数据潜力的关键。Python凭借其简洁的语法和丰富的库生态,成为数据科学家和机器学习工程师的首选语言。而在Python的众多机器学习库中,Scikit-learn以其全面、高效、易用的特点,被誉为机器学习领域的“瑞士军刀”。本文旨在深入探讨Scikit-learn的核心概念、实用功能,并通过实战代码示例,带你领略其强大之处。
61 12
|
25天前
|
机器学习/深度学习 数据采集 自然语言处理
机器学习新纪元:用Scikit-learn驾驭Python,精准模型选择全攻略!
【7月更文挑战第25天】在数据驱动的世界中, Scikit-learn作为顶级Python机器学习库,助力挖掘数据价值。本文以垃圾邮件识别为例,展示了其高效模型选择流程:从文本预处理至模型优化。使用TfidfVectorizer转换邮件文本,并通过Pipeline集成MultinomialNB分类器。通过GridSearchCV进行参数调优与交叉验证,评估不同模型(如随机森林)的表现,最终选定最佳模型。Scikit-learn简化了这一复杂过程,使其成为现代数据科学的必备工具。
20 2
|
25天前
|
机器学习/深度学习 算法 数据挖掘
从零到精通:Scikit-learn在手,数据分析与机器学习模型评估不再难!
【7月更文挑战第25天】在数据科学中,模型评估是理解模型泛化能力的关键。对新手来说,众多评估指标可能令人困惑,但Scikit-learn简化了这一过程。
30 2
|
6天前
|
机器学习/深度学习 算法 数据挖掘
机器学习新手也能飞:Python+Scikit-learn让你轻松入门!
在数据驱动的时代,机器学习是推动科技进步和智能化生活的关键。Python以简洁的语法和强大的库支持,成为机器学习的理想语言。Scikit-learn作为Python的开源机器学习库,提供简单易用的API和丰富的算法,降低了学习门槛。通过Python结合Scikit-learn,即使是初学者也能快速上手,如使用鸢尾花数据集进行分类任务,体验从数据预处理到模型训练和评估的全过程,进而探索更多机器学习的可能性。
18 0
|
14天前
|
机器学习/深度学习 数据采集 算法
Scikit-learn:打破机器学习神秘面纱,带你一路狂飙入门与进阶!
【8月更文挑战第5天】Scikit-learn 是 Python 中广泛使用的机器学习库,提供丰富的工具和算法,助力解决实际问题。对初学者友好,从简单的线性回归开始,到复杂的分类任务如逻辑回归和支持向量机,再到数据预处理如标准化和归一化,逐步展现其强大功能。通过实践,用户可以熟练掌握并应用于房价预测、图像识别等多种场景,创造高价值成果。
23 0
|
23天前
|
机器学习/深度学习 数据采集 数据挖掘
实战派教学:掌握Scikit-learn,轻松实现数据分析与机器学习模型优化!
【7月更文挑战第27天】在数据科学领域, Scikit-learn因高效易用成为首选工具。本文采用实战方式教授Scikit-learn的基础入门、数据预处理、模型选择与训练、评估及调优。首先需安装Scikit-learn (`pip install scikit-learn`) 并加载数据集(如Iris)。
24 0

热门文章

最新文章