机器学习的基础

文章目录

    • 一、机器学习基本概念
      • 1. 常用算法
      • 2. 常用概念
      • 3. 机器学习步骤框架
      • 4. 机器学习中分类和预测算法的评估
    • 二、sklearn机器学习库的介绍
      • 3.1. 定义
      • 3.2. sklearn数据类型
      • 3.3. sklearn总览
        • 3.3.1. 数据预处理
        • 3.3.2. 数据集
        • 3.3.3. 特征选择
        • 3.3.4. 特征降维
        • 3.3.5. 模型构建
          • (1) 分类模型
          • (2) 回归模型
          • (3) 聚类模型
        • 3.3.6. 模型评估
        • 3.3.7. 模型优化
    • 三、机器学习用到的python库
      • 1. Numpy
      • 2. Pandas
      • 3. Matplotlib

一、机器学习基本概念

1. 常用算法

  • 线性回归(Linear Regression
  • 逻辑回归(Logistic Regression
  • 线性判别分析(Linear Discriminant Analysis
  • 分类和回归树(Decision Tree
  • 朴素贝叶斯(Bayes Theorem
  • k近邻(K-Nearest Neighbors
  • 支持向量机(Support Vector Machine
  • k-means聚类
  • PCA降维
  • 自适应核回归

2. 常用概念

  • 训练集:又称训练样例,用来进行训练,也就是产生模型或者算法的数据集

  • 测试集:又称测试样例,用来专门进行测试已经学习好的模型或者算法的数据集

  • 特征值:属性的集合,通常用一个向量来表示,附属于一个实例

  • 标记:实例类别的标记(正例与反例或者更多)

  • 分类:目标标记为类别型数据

  • 回归:目标标记为连续型数值

  • 有监督学习:训练集有类别标记

  • 无监督学习:训练集无类别标记

  • 半监督学习:训练集既有有类别标记又有无类别标记

3. 机器学习步骤框架

  1. 把数据拆分为训练集和测试集
  2. 用训练集和训练集的特征向量来训练算法
  3. 用学习来的算法运用在测试集上来评估算法(可能要涉及到调整参数,用验证集)

4. 机器学习中分类和预测算法的评估

  • 准确性
  • 速度
  • 强壮性
  • 可规模性
  • 可解释性

二、sklearn机器学习库的介绍

3.1. 定义

  • 定义sklearn是基于python语言的机器学习工具包,是目前做机器学习项目当之无愧的第一工具。 sklearn自带了大量的数据集,可供我们练习各种机器学习算法。 sklearn集成了数据预处理、数据特征选择、数据特征降维、分类\回归\聚类模型、模型评估等非常全面算法。

    分类:识别某个对象属于哪个类别,常用的算法有:SVM(支持向量机),nearest neighbors(最近邻)、random forest(随机森林)

    回归:预测与对象相关联的连续值属性,常用算法:SVR(支持向量机), ridge regression(岭回归)、Lasso

    聚类:将相似对象自动分组,常用算法: k-Means、 spectral clustering、mean-shift

    降维:减少要考虑的随机变量的数量,PCA(主成分分析), eature selection(特征选择)、non-negative matrix factorization(非负矩阵分解)

    模型选择:比较,验证,选择参数和模型,常用的模块有:grid search(网格搜索)、cross validation(交叉验证)、 metrics(度量)

    预处理:特征提取和归一化,把输入的数据转换为机器学习算法可用的数据

3.2. sklearn数据类型

​ 机器学习最终处理的数据都是数字,只不过这些数据可能以不同的形态被呈现出来,如矩阵、文字、图片、视频、音频等。

3.3. sklearn总览

机器学习的基础_第1张图片

3.3.1. 数据预处理

机器学习的基础_第2张图片

  • sklearn.preprocessing

    函数 功能
    preprocessing.scale( ) 标准化
    preprocessing.MinMaxScaler( ) 最大最小值标准化
    preprocessing.StandardScaler( ) 数据标准化
    preprocessing.MaxAbsScaler( ) 绝对值最大标准化
    preprocessing.RobustScaler( ) 带离群值数据集标准化
    preprocessing.QuantileTransformer( ) 使用分位数信息变换特征
    preprocessing.PowerTransformer( ) 使用幂变换执行到正态分布的映射
    preprocessing.Normalizer( ) 正则化
    preprocessing.OrdinalEncoder( ) 将分类特征转换为分类数值
    preprocessing.LabelEncoder( ) 将分类特征转换为分类数值
    preprocessing.MultiLabelBinarizer( ) 多标签二值化
    preprocessing.OneHotEncoder( ) 独热编码
    preprocessing.KBinsDiscretizer( ) 将连续数据离散化
    preprocessing.FunctionTransformer( ) 自定义特征处理函数
    preprocessing.Binarizer( ) 特征二值化
    preprocessing.PolynomialFeatures( ) 创建多项式特征
    preprocesssing.Normalizer( ) 正则化
    preprocessing.Imputer( ) 弥补缺失值
  • sklearn.svm

    函数 介绍
    svm.OneClassSVM( ) 无监督异常值检测

    上述preprocessing类函数的方法如下:

    函数方法 介绍
    xxx.fit( ) 拟合数据
    xxx.fit_transform( ) 拟合并转换数据
    xxx.get_params( ) 获取函数参数
    xxx.inverse_transform( ) 逆转换
    xxx.set_params( ) 设置参数
    xxx.transform( ) 转换数据

3.3.2. 数据集

机器学习的基础_第3张图片

  • sklearn.datasets
  1. 获取小数据集(本地加载):datasets.load_xxx()

  2. 获取大数据集(在线下载):datasets.fetch_xxx()

  3. 本地生成数据集(本地构造):datasets.make_xxx()

    数据集 介绍
    load_iris( ) 鸢尾花数据集:3类、4个特征、150个样本
    load_boston( ) 波斯顿房价数据集:13个特征、506个样本
    load_digits( ) 手写数字集:10类、64个特征、1797个样本
    load_breast_cancer( ) 乳腺癌数据集:2类、30个特征、569个样本
    load_diabets( ) 糖尿病数据集:10个特征、442个样本
    load_wine( ) 红酒数据集:3类、13个特征、178个样本
    load_files( ) 加载自定义的文本分类数据集
    load_linnerud( ) 体能训练数据集:3个特征、20个样本
    load_sample_image( ) 加载单个图像样本
    load_svmlight_file( ) 加载svmlight格式的数据
    make_blobs( ) 生成多类单标签数据集
    make_biclusters( ) 生成双聚类数据集
    make_checkerboard( ) 生成棋盘结构数组,进行双聚类
    make_circles( ) 生成二维二元分类数据集
    make_classification( ) 生成多类单标签数据集
    make_friedman1( ) 生成采用了多项式和正弦变换的数据集
    make_gaussian_quantiles( ) 生成高斯分布数据集
    make_hastie_10_2( ) 生成10维度的二元分类数据集
    make_low_rank_matrix( ) 生成具有钟形奇异值的低阶矩阵
    make_moons( ) 生成二维二元分类数据集
    make_multilabel_classification( ) 生成多类多标签数据集
    make_regression( ) 生成回归任务的数据集
    make_s_curve( ) 生成S型曲线数据集
    make_sparse_coded_signal( ) 生成信号作为字典元素的稀疏组合
    make_sparse_spd_matrix( ) 生成稀疏堆成的正定矩阵
    make_sparse_uncorrelated( ) 使用稀疏的不相关设计生成随机回归问题
    make_spd_matrix( ) 生成随机堆成的正定矩阵
    make_swiss_roll( ) 生成瑞士卷曲线数据集

3.3.3. 特征选择

机器学习的基础_第4张图片

  • sklean.feature_selection

    函数 功能
    feature_selection.SelectKBest( ) feature_selection.chi2 ( )feature_selection.f_regression( ) feature_selection.mutual_info_regression( ) 选择K个得分最高的特征
    feature_selection.VarianceThreshold( ) 无监督特征选择
    feature_selection.REF( ) 递归式特征消除
    feature_selection.REFCV( ) 递归式特征消除交叉验证法
    feature_selection.SelectFromModel( ) 特征选择

3.3.4. 特征降维

机器学习的基础_第5张图片

  • sklearn.decomposition

    函数 功能
    decomposition.PCA( ) 主成分分析
    decomposition.KernelPCA( ) 核主成分分析
    decomposition.IncrementalPCA( ) 增量主成分分析
    decomposition.MiniBatchSparsePCA( ) 小批量稀疏主成分分析
    decomposition.SparsePCA( ) 稀疏主成分分析
    decomposition.FactorAnalysis( ) 因子分析
    decomposition.TruncatedSVD( ) 截断的奇异值分解
    decomposition.FastICA( ) 独立成分分析的快速算法
    decomposition.DictionaryLearning( ) 字典学习
    decomposition.MiniBatchDictonaryLearning( ) 小批量字典学习
    decomposition.dict_learning( ) 字典学习用于矩阵分解
    decomposition.dict_learning_online( ) 在线字典学习用于矩阵分解
    decomposition.LatentDirichletAllocation( ) 在线变分贝叶斯算法的隐含迪利克雷分布
    decomposition.NMF( ) 非负矩阵分解
    decomposition.SparseCoder( ) 稀疏编码
  • sklearn.manifold

    函数 功能
    manifold.LocallyLinearEmbedding( ) 局部非线性嵌入
    manifold.Isomap( ) 流形学习
    manifold.MDS( ) 多维标度法
    manifold.t-SNE( ) t分布随机邻域嵌入
    manifold.SpectralEmbedding( ) 频谱嵌入非线性降维

3.3.5. 模型构建

(1) 分类模型

机器学习的基础_第6张图片

  • sklearn.tree

    函数 功能
    tree.DecisionTreeClassifier() 决策树
  • sklearn.ensemble

    函数 功能
    ensemble.BaggingClassifier() 装袋法集成学习
    ensemble.AdaBoostClassifier( ) 提升法集成学习
    ensemble.RandomForestClassifier( ) 随机森林分类
    ensemble.ExtraTreesClassifier( ) 极限随机树分类
    ensemble.RandomTreesEmbedding( ) 嵌入式完全随机树
    ensemble.GradientBoostingClassifier( ) 梯度提升树
    ensemble.VotingClassifier( ) 投票分类法
  • sklearn.linear_model

    函数 功能
    linear_model.LogisticRegression( ) 逻辑回归
    linear_model.Perceptron( ) 线性模型感知机
    linear_model.SGDClassifier( ) 具有SGD训练的线性分类器
    linear_model.PassiveAggressiveClassifier( ) 增量学习分类器
  • sklearn.svm

    函数 功能
    svm.SVC( ) 支持向量机分类
    svm.NuSVC( ) Nu支持向量分类
    svm.LinearSVC( ) 线性支持向量分类
  • sklearn.neighbors

    函数 功能
    neighbors.NearestNeighbors( ) 无监督学习临近搜索
    neighbors.NearestCentroid( ) 最近质心分类器
    neighbors.KNeighborsClassifier() K近邻分类器
    neighbors.KDTree( ) KD树搜索最近邻
    neighbors.KNeighborsTransformer( ) 数据转换为K个最近邻点的加权图
  • sklearn.discriminant_analysis

    函数 功能
    discriminant_analysis.LinearDiscriminantAnalysis( ) 线性判别分析
    discriminant_analysis.QuadraticDiscriminantAnalysis( ) 二次判别分析
  • sklearn.gaussian_process

    函数 功能
    gaussian_process.GaussianProcessClassifier( ) 高斯过程分类
  • sklearn.naive_bayes

    函数 功能
    naive_bayes.GaussianNB( ) 朴素贝叶斯
    naive_bayes.MultinomialNB( ) 多项式朴素贝叶斯
    naive_bayes.BernoulliNB( ) 伯努利朴素贝叶斯
(2) 回归模型

机器学习的基础_第7张图片

  • sklearn.tree

    函数 功能
    tree.DecisionTreeRegress( ) 回归决策树
    tree.ExtraTreeRegressor( ) 极限回归树
  • sklearn.ensemble

    函数 功能
    ensemble.GradientBoostingRegressor( ) 梯度提升法回归
    ensemble.AdaBoostRegressor( ) 提升法回归
    ensemble.BaggingRegressor( ) 装袋法回归
    ensemble.ExtraTreeRegressor( ) 极限树回归
    ensemble.RandomForestRegressor( ) 随机森林回归
  • sklearn.linear_model

    函数 功能
    linear_model.LinearRegression( ) 线性回归
    linear_model.Ridge( ) 岭回归
    linear_model.Lasso( ) 经L1训练后的正则化器
    linear_model.ElasticNet( ) 弹性网络
    linear_model.MultiTaskLasso( ) 多任务Lasso
    linear_model.MultiTaskElasticNet( ) 多任务弹性网络
    linear_model.Lars( ) 最小角回归
    linear_model.OrthogonalMatchingPursuit( ) 正交匹配追踪模型
    linear_model.BayesianRidge( ) 贝叶斯岭回归
    linear_model.ARDRegression( ) 贝叶斯ADA回归
    linear_model.SGDRegressor( ) 随机梯度下降回归
    linear_model.PassiveAggressiveRegressor( ) 增量学习回归
    linear_model.HuberRegression( ) Huber回归
  • sklearn.svm

    函数 功能
    svm.SVR( ) 支持向量机回归
    svm.NuSVR( ) Nu支持向量回归
    svm.LinearSVR( ) 线性支持向量回归
  • sklearn.neighbors

    函数 功能
    neighbors.KNeighborsRegressor( ) K近邻回归
    neighbors.RadiusNeighborsRegressor( ) 基于半径的近邻回归
  • sklearn.kernel_ridge

    函数 功能
    kernel_ridge.KernelRidge( ) 内核岭回归
  • sklearn.gaussian_process

    函数 功能
    gaussian_process.GaussianProcessRegressor( ) 高斯过程回归
  • sklearn.cross_decomposition

    函数 功能
    cross_decomposition.PLSRegression( ) 偏最小二乘回归
(3) 聚类模型

机器学习的基础_第8张图片

  • sklearn.cluster

    函数 功能
    cluster.DBSCAN( ) 基于密度的聚类
    cluster.GaussianMixtureModel( ) 高斯混合模型
    cluster.AffinityPropagation( ) 吸引力传播聚类
    cluster.AgglomerativeClustering( ) 层次聚类
    cluster.Birch( ) 利用层次方法的平衡迭代聚类
    cluster.KMeans( ) K均值聚类
    cluster.MiniBatchKMeans( ) 小批量K均值聚类
    cluster.MeanShift( ) 平均移位聚类
    cluster.OPTICS( ) 基于点排序来识别聚类结构
    cluster.SpectralClustering( ) 谱聚类
    cluster.Biclustering( ) 双聚类
    cluster.ward_tree( ) 集群病房树
  • 模型方法

    方法 功能
    xxx.fit( ) 模型训练
    xxx.get_params( ) 获取模型参数
    xxx.predict( ) 预测新输入数据
    xxx.score( ) 评估模型分类/回归/聚类模型
    xxx.set_params( ) 设置模型参数

3.3.6. 模型评估

机器学习的基础_第9张图片

  • 分类模型评估

    函数 功能
    metrics.accuracy_score( ) 准确率
    metrics.average_precision_score( ) 平均准确率
    metrics.log_loss( ) 对数损失
    metrics.confusion_matrix( ) 混淆矩阵
    metrics.classification_report( ) 分类模型评估报告:准确率、召回率、F1-score
    metrics.roc_curve( ) 受试者工作特性曲线
    metrics.auc( ) ROC曲线下面积
    metrics.roc_auc_score( ) AUC值
  • 回归模型评估

    函数 功能
    metrics.mean_squared_error( ) 平均决定误差
    metrics.median_absolute_error( ) 中值绝对误差
    metrics.r2_score( ) 决定系数
  • 聚类模型评估

    函数 功能
    metrics.adjusted_rand_score( ) 随机兰德调整指数
    metrics.silhouette_score( ) 轮廓系数

3.3.7. 模型优化

机器学习的基础_第10张图片

函数 功能
model_selection.cross_val_score( ) 交叉验证
model_selection.LeaveOneOut( ) 留一法
model_selection.LeavePout( ) 留P法交叉验证
model_selection.GridSearchCV( ) 网格搜索
model_selection.RandomizedSearchCV( ) 随机搜索
model_selection.validation_curve( ) 验证曲线
model_selection.learning_curve( ) 学习曲线

三、机器学习用到的python库

1. Numpy

  • Numpy:通常用来进行矢量化的计算

  • 优点:

    1. numpy的基本对象是ndarray,最大的优势在于用它进行多维数组的计算,不用写多重for循环,直接可以进行矢量化的运算
    2. 封装了vectorize函数,可以把处理标量的函数矢量化,极大地提高了计算速度
  • 缺点:

    1. ndarray中的数据类型必须相同,于是有了pandas可以处理不同数据类型的数据集

2. Pandas

  • Pandas: 通常用来处理结构化的数据
  • 优点:
    1. 数据结构Series,理解为一个一维的数组,只是index名称可以自己改动。类似于定长的有序字典,有index和value
    2. 数据结构DataFrame,理解为一个二维数组,索引有两个维度,可更改。一行一样本,一列一特征。每一行都可以看作一个样本,每一列都可以看作一个Series
    3. 封装的to_datetime函数转换日期数据类型,支持大多数的日期格式,而且转换后的datetime类型数据支持日期运算

3. Matplotlib

  • Matplotlib: 用来绘制出直观的图表

你可能感兴趣的:(机器学习,机器学习,python,人工智能)