Python系列之Python机器学习应用 北理工MOOC(一)


说明

本文内容整理自中国大学MOOC “北京理工大学Python系列课程之Python机器学习应用” 课程PPT,转载请注明出处
授课老师:礼欣 、嵩天
中国大学MOOC Python机器学习课程链接
Python123 编程更简单(课程组老师建立的一个相关网站)


一、机器学习简介

1.机器学习的目标

机器学习是实现人工智能的手段,其主要研究内容是如何利用数据或经验进行学习,改善具体算法的性能。

  • 多领域交叉,涉及概率论、统计学,算法复杂度理论等多门学科
  • 广泛应用于网络搜索、垃圾邮件过滤、推荐系统、广告投放、信用评价、
    欺诈检测、股票交易和医疗诊断等应用

2.机器学习的分类

机器学习一般分为下面几种类别:

  • 监督学习 (Supervised Learning)
  • 无监督学习 (Unsupervised Learning)
  • 强化学习 (Reinforcement Learning,增强学习)
  • 半监督学习 (Semi-supervised Learning)
  • 深度学习 (Deep Learning)

3.Python Scikit-learn

scikit-learn~Machine Leaning in Python
一组简单有效的工具集
依赖Python的NumPy,SciPy和matplotlib库
开源、可复用

4.Scikit-learn 常用函数

  

~~

  

应用(Applications) 算法(Algorithm)
分类(Classification) 异常检测,图像识别,等 KNN, SVM,etc.
聚类(Clustering) 图像分割,群体划分,等 K-Means,谱聚类, etc.
回归(Regression) 价格预测,趋势预测,等 线性回归,SVR,etc.
降维(Dimension Reduction) 可视化 PCA,NMF,etc.

5.课程目标

  • 了解基本的机器学习原理及算法
  • 学习利用机器学习算法解决应用问题的能力
  • 掌握sklearn库中常用机器学习算法的基本调用方法,避免重复造车

6.相关书籍及课程推荐

1.《机器学习》-周志华

《机器学习》-周志华

昵称:西瓜书

2.《PRML》-Bishop

Pattern Recognition and Machine Learning

民间评价:“早知此书,PhD早毕业2年”

3.《Machine Learning》-Andrew Ng

CS229: 机器学习

斯坦福大学:CS229-机器学习

4.《CS231n》- Fei-Fei Li


CS231n:Deep Learning for Computer Vision

斯坦福大学:CS231n-Deep Learning for Computer Vision

5.《Reinforcement Learning》-David Silver


UCL Course on RL

伦敦大学学院RL课程

二、python - sklearn库

1.sklearn库

sklearn是scikit-learn的简称,是一个基于Python的第三方模块。
sklearn库集成了一些常用的机器学习方法,在进行机器学习任务时,并不需要实现算法,只需要简单的调用sklearn库中提供的模块就能完成大多数的机器学习任务。
sklearn库是在Numpy、Scipy和matplotlib的基础上开发而成的,因此在介绍sklearn的安装前,需要先安装这些依赖库。

1.1 Numpy库

Numpy(Numerical Python的缩写)是一个开源的Python科学计算库。在
Python中虽然提供了list容器和array模块,但这些结构并不适合于进行数值计算,
因此需要借助于Numpy库创建常用的数据结构(如:多维数组,矩阵等)以及进
行常用的科学计算(如:矩阵运算)。

2.1 Scipy库

Scipy库是sklearn库的基础,它是基于Numpy的一个集成了多种数学算法和函
数的Python模块。它的不同子模块有不同的应用,如:积分、插值、优化和信号
处理等。

3.1 matplotlib库

matplotlib是基于Numpy的一套Python工具包,它提供了大量的数据绘图工
具,主要用于绘制一些统计图形,将大量的数据转换成更加容易被接受的图表。

注意要先安装numpy再安装matplotlib库

2.安装顺序

依赖关系:

#mermaid-svg-IyAklslurZWKtFZR {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-IyAklslurZWKtFZR .error-icon{fill:#552222;}#mermaid-svg-IyAklslurZWKtFZR .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-IyAklslurZWKtFZR .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-IyAklslurZWKtFZR .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-IyAklslurZWKtFZR .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-IyAklslurZWKtFZR .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-IyAklslurZWKtFZR .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-IyAklslurZWKtFZR .marker{fill:#333333;stroke:#333333;}#mermaid-svg-IyAklslurZWKtFZR .marker.cross{stroke:#333333;}#mermaid-svg-IyAklslurZWKtFZR svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-IyAklslurZWKtFZR defs #statediagram-barbEnd{fill:#333333;stroke:#333333;}#mermaid-svg-IyAklslurZWKtFZR g.stateGroup text{fill:#9370DB;stroke:none;font-size:10px;}#mermaid-svg-IyAklslurZWKtFZR g.stateGroup text{fill:#333;stroke:none;font-size:10px;}#mermaid-svg-IyAklslurZWKtFZR g.stateGroup .state-title{font-weight:bolder;fill:#131300;}#mermaid-svg-IyAklslurZWKtFZR g.stateGroup rect{fill:#ECECFF;stroke:#9370DB;}#mermaid-svg-IyAklslurZWKtFZR g.stateGroup line{stroke:#333333;stroke-width:1;}#mermaid-svg-IyAklslurZWKtFZR .transition{stroke:#333333;stroke-width:1;fill:none;}#mermaid-svg-IyAklslurZWKtFZR .stateGroup .composit{fill:white;border-bottom:1px;}#mermaid-svg-IyAklslurZWKtFZR .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px;}#mermaid-svg-IyAklslurZWKtFZR .state-note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-IyAklslurZWKtFZR .state-note text{fill:black;stroke:none;font-size:10px;}#mermaid-svg-IyAklslurZWKtFZR .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#mermaid-svg-IyAklslurZWKtFZR .edgeLabel .label rect{fill:#ECECFF;opacity:0.5;}#mermaid-svg-IyAklslurZWKtFZR .edgeLabel .label text{fill:#333;}#mermaid-svg-IyAklslurZWKtFZR .label div .edgeLabel{color:#333;}#mermaid-svg-IyAklslurZWKtFZR .stateLabel text{fill:#131300;font-size:10px;font-weight:bold;}#mermaid-svg-IyAklslurZWKtFZR .node circle.state-start{fill:#333333;stroke:#333333;}#mermaid-svg-IyAklslurZWKtFZR .node .fork-join{fill:#333333;stroke:#333333;}#mermaid-svg-IyAklslurZWKtFZR .node circle.state-end{fill:#9370DB;stroke:white;stroke-width:1.5;}#mermaid-svg-IyAklslurZWKtFZR .end-state-inner{fill:white;stroke-width:1.5;}#mermaid-svg-IyAklslurZWKtFZR .node rect{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-IyAklslurZWKtFZR .node polygon{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-IyAklslurZWKtFZR #statediagram-barbEnd{fill:#333333;}#mermaid-svg-IyAklslurZWKtFZR .statediagram-cluster rect{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-IyAklslurZWKtFZR .cluster-label,#mermaid-svg-IyAklslurZWKtFZR .nodeLabel{color:#131300;}#mermaid-svg-IyAklslurZWKtFZR .statediagram-cluster rect.outer{rx:5px;ry:5px;}#mermaid-svg-IyAklslurZWKtFZR .statediagram-state .divider{stroke:#9370DB;}#mermaid-svg-IyAklslurZWKtFZR .statediagram-state .title-state{rx:5px;ry:5px;}#mermaid-svg-IyAklslurZWKtFZR .statediagram-cluster.statediagram-cluster .inner{fill:white;}#mermaid-svg-IyAklslurZWKtFZR .statediagram-cluster.statediagram-cluster-alt .inner{fill:#f0f0f0;}#mermaid-svg-IyAklslurZWKtFZR .statediagram-cluster .inner{rx:0;ry:0;}#mermaid-svg-IyAklslurZWKtFZR .statediagram-state rect.basic{rx:5px;ry:5px;}#mermaid-svg-IyAklslurZWKtFZR .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#f0f0f0;}#mermaid-svg-IyAklslurZWKtFZR .note-edge{stroke-dasharray:5;}#mermaid-svg-IyAklslurZWKtFZR .statediagram-note rect{fill:#fff5ad;stroke:#aaaa33;stroke-width:1px;rx:0;ry:0;}#mermaid-svg-IyAklslurZWKtFZR .statediagram-note rect{fill:#fff5ad;stroke:#aaaa33;stroke-width:1px;rx:0;ry:0;}#mermaid-svg-IyAklslurZWKtFZR .statediagram-note text{fill:black;}#mermaid-svg-IyAklslurZWKtFZR .statediagram-note .nodeLabel{color:black;}#mermaid-svg-IyAklslurZWKtFZR .statediagram .edgeLabel{color:red;}#mermaid-svg-IyAklslurZWKtFZR #dependencyStart,#mermaid-svg-IyAklslurZWKtFZR #dependencyEnd{fill:#333333;stroke:#333333;stroke-width:1;}#mermaid-svg-IyAklslurZWKtFZR :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

Numpy
Scipy
matplotlib
sklearn

建议安装顺序:Numpy库-> Scipy库->matplotlib库->sklearn库
安装命令:

pip install numpy
pip install scipy
pip install matplotlib
pip install sklearn

3.sklearn库中的标准数据集

sklearn库中的标准数据集:

数据集名称 调用方式 适用算法 数据规模
小数据集 波士顿房价数据集 load_boston() 回归 506×13
鸢尾花数据集 load_iris() 分类 150×4
糖尿病数据集 load_diabetes()> 回归 442*10
手写数字数据集 load_digits() 分类 5620*64
大数据集 Olivetti脸部图像数据集 fetch_olivetti_faces() 降维 400*64*64
新闻分类数据集 fetch_20newsgroups() 分类 -
带标签的人脸数据集 fetch_lfw_people() 分类;降维 -
路透社新闻语料数据集 fetch_rcv1() 分类 804414*47236

3.1波士顿房价数据集

波士顿房价数据集包含506组数据,每条数据包含房屋以及房屋周围的详细信息。其中包括城镇犯罪率、一氧化氮浓度、住宅平均房间数、到中心区域的加权距离以及自住房平均房价等。因此,波士顿房价数据集能够应用到回归问题上。
波士顿房价数据集部分房价数据

3.1.1波士顿房价数据集-属性描述

标号 属性
CRIM 城镇人均犯罪率。
ZN 住宅用地超过 25000 sq.ft. 的比例。
INDUS 城镇非零售商用土地的比例。
CHAS 查理斯河空变量(如果边界是河流,则为1;否则为0)
NOX 一氧化氮浓度。
RM 住宅平均房间数。
AGE 1940 年之前建成的自用房屋比例。
DIS 到波士顿五个中心区域的加权距离。
RAD 辐射性公路的接近指数。
TAX 每 10000 美元的全值财产税率。
PTRATIO 城镇师生比例。
B 1000(Bk-0.63)2,其中 Bk 指代城镇中黑人的比例。
LSTAT 人口中地位低下者的比例。
MEDV 自住房的平均房价,以千美元计。

3.1.2波士顿房价数据集-加载语句

使用 sklearn.datasets.load_boston 即可加载相关数据集

重要参数为:
return_X_y:表示是否返回 target(即价格),默认为False,只返回data(即属性)。

3.1.3波士顿房价数据集-加载示例

示例1:

>>> from sklearn.datasets import load_boston
>>> boston = load_boston()
>>> print(boston.data.shape)
(506, 13)

示例2:

from sklearn.datasets import load_boston
>>> data, target = load_boston(return_X_y=True)
>>> print(data.shape)
(506, 13)
>>> print(target.shape)
(506)

3.2鸢尾花数据集

鸢尾花数据集采集的是鸢尾花的测量数据以及其所属的类别。
测量数据包括:萼片长度、萼片宽度、花瓣长度、花瓣宽度。
类别共分为三类:Iris Setosa,Iris Versicolour,Iris Virginica。该
数据集可用于多分类问题。鸢尾花数据集部分数据示例

3.2.1鸢尾花数据集-加载语句

使用 sklearn.datasets. load_iris 即可加载相关数据集

重要参数为:
return_X_y:若为True,则以(data, target)形式返回数据;默认为False,表示以字典形式返回数据全部信息(包括data和target)。

3.2.2鸢尾花数据集-加载示例

示例:

>>> from sklearn.datasets import load_iris
>>> iris = load_iris()
>>> print(iris.data.shape)
(150, 4)
>>> print(iris.target.shape)
(150, )
>>> list(iris.target_names)
['setosa', 'versicolor', 'virginica']

3.3 手写数字数据集

手写数字数据集包括1797个0-9的手写数字数据,每个数字由8×8大小的矩阵构成,矩阵中值的范围是0-16,代表颜色的深度。
手写数字数据集示例

3.3.1手写数字数据集-加载语句

使用 sklearn.datasets.**load_digits** 即可加载相关数据集

重要参数为:
return_X_y:若为True,则以(data, target)形式返回数据;默认为False,表示以字典形式返回数据全部信息(包括data和target) ;
n_class:表示返回数据的类别数,如:n_class=5,则返回0到4的数据样本。

3.3.2 手写数字数据集-加载示例

示例1:

>>> from sklearn.datasets import load_digits
>>> digits = load_digits()
>>> print(digits.data.shape)
(1797, 64)
>>> print(digits.target.shape)
(1797, )
>>> print(digits.images.shape)
(1797, 8, 8)
>>> import matplotlib.pyplot as plt
>>> plt.matshow(digits.images[0])
>>> plt.show()

4. sklearn库的基本功能

sklearn库的共分为6大部分,分别用于完成分类任务、回归任务、聚类任务、降维任务、模型选择以及数据的预处理。

4.1 分类任务

分类模型 加载模块
最近邻算法 neighbors.NearestNeighbors
支持向量机 svm.SVC
朴素贝叶斯 naive_bayes.GaussianNB
决策树 tree.DecisionTreeClassifier
集成方法 ensemble.BaggingClassifier
神经网络 neural_network.MLPClassifier

4.2 回归任务

回归模型 加载模块
岭回归 linear_model.Ridge
Lasso回归 linear_model.Lasso
弹性网络 linear_model.ElasticNet
最小角回归 linear_model.Lars
贝叶斯回归 linear_model.BayesianRidge
逻辑回归 linear_model.LogisticRegression
多项式回归 preprocessing. PolynomialFeatures

4.3 聚类任务

聚类方法 加载模块
K-means cluster.KMeans
AP聚类 cluster.AffinityPropagation
均值漂移 cluster.MeanShift
层次聚类 cluster.AgglomerativeClustering
DBSCAN cluster.DBSCAN
BIRCH cluster.Birch
谱聚类 cluster.SpectralClustering

4.4 降维任务

降维方法 加载模块
主成分分析 decomposition.PCA
截断SVD和LSA decomposition.TruncatedSVD
字典学习 decomposition.SparseCoder
因子分析 decomposition.FactorAnalysis
独立成分分析 decomposition.FastICA
非负矩阵分解 decomposition.NMF
LDA decomposition.LatentDirichletAllocation

传送门

Python机器学习应用 北理工MOOC(二)<未完工待续。。。>

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
)">
< <上一篇
下一篇>>