了解基本的机器学习原理及算法
学习利用机器学习算法解决应用问题的能力
掌握sklearn库中常用机器学习基本调用方法,避免重复造车
1:机器学习简介
机器学习的目标:
机器学习是实人工智能的手段,其主要研究内容是如何利用数据和经验进行学习,改善具体算法的性能。
多领域交叉,涉及概率论,统计学,算法复杂度理论等多门学科。
广泛应用于网络搜索,垃圾邮件过滤,推荐系统,广告投放,信用评价,欺诈检测、股票交易和医疗诊断等应用。
机器学习分类:
机器学习一般分为下面几种类型:
监督学习
无监督学习
强化学习
半监督学习
深度学习
Python scikit-learn :
http://scikit-learn.org/stable
Machine leaning in Python
一组简单有效的工具集
依赖python 的numpy ,scipy和matplotlib库
开源,可复用
Scikit-learn 学用函数:
| 应用(Applications) | 算法(Algorithm) |
分类(Classification) | 异常检测,图像识别,等 | KNN,SVM,etc |
聚类(clustering) | 图像分割,群体划分,等 | K-Means,谱聚类,etc |
回归(Regression) | 价格预测,趋势预测,等 | 线性回归,svr,etc |
降维(Dimension reduction) | 可视化 | PCA,NMF,etc |
《机器学习》 -周志化
《Pattern recognition and machine learning》 模式识别与机器学习
2:SKlearn库:
sklearn是scikit-learn的简称,是一个基于Python的第三方模块。sklearn库集成了一些常用的机器学习方法,在进行机器学习任务时,并不需要实现算法,只需要简单的调用sklearn库中提供的模块就能完成大多数的机器学习任务。
sklearn库是在Numpy、 Scipy和matplotlib的基础上开发而成的,因此在介绍sklearn的安装前,需要先安装这些依赖库。
3:Numpy库
Numpy(Numerical Python的缩写)是一个开源的Python科学计算库。在Python中虽然提供了list容器和array模块,但这些结构并不适合于进行数值计算,因此需要借助于Numpy库创建常用的数据结构(如:多维数组,矩阵等)以及进行常用的科学计算(如:矩阵运算)。
Scipy库是sklearn库的基础,它是基于Numpy的一个集成了多种数学算法和函数的Python模块。它的不同子模块有不同的应用,如:积分、插值、优化和信号处理等。
matplotlib是基于Numpy的一套Python工具包,它提供了大量的数据绘图工具,主要用于绘制一些统计图形,将大量的数据转换成更加容易被接受的图表。(注意要先安装numpy再安装matplotlib库)
安装相应的包:
pip install scikit_learn
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 |
波士顿房价数据集 :
波士顿房价数据集包含506组数据,每条数据包含房屋以及房屋周围的详细信息。其中包括城镇犯罪率、一氧化氮浓度、住宅平均房间数、到中心区域的加权距离以及自住房平均房价等。因此,波士顿房价数据集能够应用到回归问题上。
Sklearn库的基本功能:
Sklearn 库的共分为6个部分:分别用于完成分类任务,回归任务,聚类任务,降维任务,模型选择及数据的预处理
分类任务:
分类模型 | 加载模型 |
最近邻算法 | neighbors.NearestNeighbors |
支持向量机 | svm.SVC |
朴素贝叶斯 | naive_bayes.GaussianNB |
决策树 | tree.DecisionTreeClassifier |
集成方法 | ensemble.BaggingClassifier |
神经网络 | neural_network.MLPClassifier |
回归任务:
回归模型 | 加载模块 |
岭回归 | linear_model.Ridge |
Lasso回归 | linear_model.Lasso |
弹性网络 | linear_model.ElasticNet |
最小角回归 | linear_model.Lars |
贝叶斯回归 | linear_model.BayesianRidge |
逻辑回归 | linear_model.LogisticRegression |
多项式回归 | preprocessing. PolynomialFeatures |
聚类任务
聚类方法 | 加载模块 |
K-means | cluster.KMeans |
AP聚类 | cluster.AffinityPropagation |
均值漂移 | cluster.MeanShift |
层次聚类 | cluster.AgglomerativeClustering |
DBSCAN | cluster.DBSCAN |
BIRCH | cluster.Birch |
谱聚类 | cluster.SpectralClustering |
降维任务
降维方法 | 加载模块 |
主成分分析 | decomposition.PCA |
截断SVD和LSA | decomposition.TruncatedSVD |
字典学习 | decomposition.SparseCoder |
因子分析 | decomposition.FactorAnalysis |
独立成分分析 | decomposition.FastICA |
非负矩阵分解 | decomposition.NMF |
LDA | decomposition.LatentDirichletAllocation |
无监督学习简介:
利用无标签的数据学习数据的分布或数据与数据之间的关系被称为无监督学习。
有监督学习和无监督学习的最大区别在于数据是否有标签
无监督学习最常用的场景是聚类(clustering)和降维(dimension redction)
聚类(clustering)
聚类,就是根据数据相似性,将数据分为多类的过程
评估两个不同样本之间的相似性,通常使用的方法就是计算两个样本之间的距离。使用不同的方法计算样本间的距离会关系到聚类结果的好坏。
欧氏距离:
欧氏距离是最常用的一种距离度量方法,源于欧氏空间中两点的距离。其计算方法如下:
D
图.二维空间欧氏距离的计算
曼哈顿距离:
曼哈顿距离:
曼哈顿距离也称作“城市街区距离”,类似于在城市之中驾车行驶,从一个十字路口到另外一个十字楼口的距离,其计算方法如下:
D=