数据结构论坛

注册

 

发新话题 回复该主题

看完这篇scikitlearn学习指南 [复制链接]

1#
北京哪家皮炎医院好 http://baidianfeng.39.net/a_yufang/210612/9057338.html

欢迎来到scikit-learn机器学习世界。

scikit-learn是一款强大的通用机器学习库。属于传统机器学习的领域,其特点是利用特征工程,人为对数据进行提炼和清洗。

本文将讨论以下主题:

机器学习简介

什么是scikit-learn?

安装scikit-learn

学习实现scikit-learn系列的算法

通过例子构建第一个回归模型

机器学习简介

什么是机器学习呢?简单来说,它是能检测数据模型,并用此作出未来预测的一系列方法。机器学习在金融和医疗保健等众多行业中具有巨大价值。这意味着机器学习领域对拥有技能资本的人才有更高的要求。

快速概览:机器学习在谷歌中的搜索趋势

从广义上讲,机器学习主要可以分为三种类型:

监督学习

无监督学习

强化学习

监督学习

监督学习是机器学习的方式之一,其数据带有一组标签或一个数值型目标变量。这些标签/类别一般属于某种特征/属性,通常被称为目标变量。例如,每一行数据要么属于“健康”类别,要么属于“不健康”类别。给定一组特征,例如体重、血糖水平和年龄,我们可以使用监督机器学习算法来预测这个人是否健康。在下面的简单数学表达式中,S是监督学习算法,X是体重和年龄等输入特征的集合,而Y是带有“健康”或“不健康”标签的目标变量:

尽管监督机器学习使用scikit-learn,也是在业界实现的最常见的机器学习类型,但大多数数据集通常没有预定义的标签。

首先使用无监督学习算法将没有标签的数据划分成不同的组,然后我们可以为这些组分配标签。

监督学习算法

监督学习算法可用来解决分类和回归问题。你将学到如何实现一些最流行的监督机器学习算法。受欢迎的监督机器学习算法在工业和研究中得到了广泛应用,并帮助我们解决了不同领域的各种问题。下面是一些监督学习算法。

线性回归:这种监督学习算法用于预测连续的数值型结果,如房价、股价和温度等。

逻辑回归:逻辑学习算法是一种流行的分类算法,特别是在信贷行业中用于预测贷款违约。

k最近邻分类算法:k最近邻(K-NN)算法是一种分类算法,它将数据分为两类或两类以上,并广泛用于房屋的分类,根据价格、面积、卧室等一系列特征将房屋分成“价格昂贵”和“价格合理”两种类别。

支持向量机:支持向量机(SVM)算法是一种流行的分类算法,用于图像检测和人脸识别,以及手写识别等应用。

基于树的算法:决策树、随机森林和提升树等基于树的算法用于解决分类和回归问题。

朴素贝叶斯:朴素贝叶斯分类器是一种利用数学概率模型来解决分类问题的机器学习算法。

无监督学习

无监督学习是机器学习的方式之一,其算法试图在没有结果/目标变量的数据中检测/找出模型。换句话说,数据此前没有标签。因此,该算法通常根据数据的相近程度,使用距离等度量法将数据组合在一起。如上一节所述,现实世界中遇到的大多数数据不会带有一组预定义标签,严格说来,只有一组没有目标属性的输入特征。在下面这个简单的数学表达式中,U是无监督学习算法,而X是体重和年龄等输入特征的集合:

根据这些数据,我们的目标是创建可能被标为“健康”或“不健康”的组。无监督学习算法使用距离等度量法来确定一组数据点的相近性,以及两个这样的组相差有多远。

无监督学习算法

无监督学习算法通常用于基于距离的聚类数据点。无监督学习算法如下所示:

K均值:K均值聚类算法是一种流行算法,根据客户的消费习惯等各种特征,划分客户类别。该算法还可以根据价格和面积等房屋特点,对房屋进行分类。

强化学习

强化学习也是机器学习的领域之一。强化指的是在特定情况下,采取适当的行动使得回报最大化。各种软件和机器使用强化学习来寻找其在特定情况下应该采取的最优行为或路径。强化学习和监督学习的不同之处在于:在监督学习中,训练数据本身具有答案,因此,数据模型是由正确答案训练而成;然而在强化学习中,没有这种答案,只能由强化智能体决定执行给定任务的步骤。在没有训练数据集的情况下,必然要从经验中学习。

如何操作Scikit-Learn?

Scikit-learn是一款免费的开源软件,可以帮助你解决监督和无监督机器学习问题。该软件完全用Python搭建,并利用了Python提供的一些最流行的库,即NumPy和SciPy。Scikit-learn非常受欢迎的主要原因在于一旦你知道了核心管道的样子,世界上大多数最流行的机器学习算法都可以在插件里快速实现并格式化。另一个原因是流行的分类算法,如逻辑回归和支持向量机是用Cython编写的。Cython为这些算法提供了类似于C语言的性能,因此在此过程中,使用scikit-learn非常有效。

Scikit-learn旨在解决与监督学习和非监督学习相关的问题,目前还不支持强化学习。

如何安装Scikit-Learn包

在个人设备上安装scikit-learn有两种方式:

通过pip安装

通过Anaconda安装

pip法可在macOS、Linux终端或WindowsPowerShell上实现,而Anaconda法将使用Anaconda提示符。在这两种安装方法之中选择一种特别简单。

·pip法

pip3installNumPy

pip3installSciPy

pip3installscikit-learn

pip3install-Uscikit-learn

·Anaconda法

condainstallNumPy

condainstallSciPy

condainstallscikit-learn

condainstall-Uscikit-learn

到目前为止,本课程的重点在于向那些刚进入机器学习世界的初学者简要介绍机器学习。我们已经了解了scikit-learn如何适应机器学习的环境以及如何安装必要的软件。

现在,我们要进行实践训练,并进行一些数据探索和分析。

在本节中我们看到的数据集是波士顿住房数据集。

使用Pandas数据帧,将数据加载到Jupyter中

通常,数据存储在表格中,这意味着它可以保存为逗号分隔变量(CSV)文件。使用Pandas库,可以将这种格式和许多其它格式作为数据帧对象读入Python。其它常见格式包括制表符分隔变量(TSV)、SQL表格和JSON数据结构。实际上,Pandas支持以上所有格式。但是,在本例中,我们不打算用这种方式加载数据,因为数据集可以直接通过scikit-learn获得。

可以使用该方法从sklearn.datasets模块访问波士顿住房数据集。

获取小数据集:load_boston

fromsklearnimportdatasets

boston=datasets.load_boston()

type(boston)

print(boston[DESCR])

importpandasaspd

##LoadingthedataasDataframeinpandas

df=pd.DataFrame(data=boston[data],columns=boston[feature_names])

#Checkingourtop5rowsofthedataframe

df.head()

在机器学习中,正在被建模的变量称为目标变量;根据给定的特征,目标变量就是你所要预测的东西。对于此数据集,建议的目标变量是MEDV,即以千美元计的平均房价。

##AddingTargettempColumntoourdataframe

df[MEDV]=boston[target]

##CreatingcopyofthetargetValue

y=df[MEDV].copy()

##DeletingtheNewlycreatedcolumn

deldf[MEDV]

##Concatthetargetcolumnstoourexistingdataframe

df=pd.concat((y,df),axis=1)

在此,我们引入虚拟变量y来保存目标列的副本,然后再从数据帧中删除它。然后我们使用Pandasconcatenation函数将它与沿第1轴的剩余数据帧相结合(与包括行的0轴相反)。

print(df.shape)

df.isnull().sum()

---------------------

(,14)

MEDV0

CRIM0

ZN0

INDUS0

CHAS0

NOX0

RM0

AGE0

DIS0

RAD0

TAX0

PTRATIO0

B0

LSTAT0

dtype:int64

对于这个数据集,我们看到没有非数元素(NaNs),这意味着我们在清理数据方面没有立即要做的工作,可以继续进行。

为了简化分析,我们在探索之前要做的最后一件事是删除一些列。我们将不再

分享 转发
TOP
发新话题 回复该主题