sklearn浅析(一)——sklearn的组织结构

sklearn是基于numpy和scipy的一个机器学习算法库,设计的非常优雅,它让我们能够使用同样的接口来实现所有不同的算法调用。本文首先介绍下sklearn内的模块组织算法类的顶层设计图

三大模块

监督学习(supervised learning)

1.

  • neighbors:近邻算法
  • svm:支持向量机
  • kernel-ridge:核——岭回归
  • discriminant_analysis:判别分析
  • linear_model:广义线性模型

2.

  • ensemle:集成方法
  • tree:决策树
  • naive_bayes:朴素贝叶斯
  • cross_decomposition:交叉分解
  • gaussian_process:高斯过程

3.

  • neural_network:神经网络
  • calibration:概率校准
  • isotonic:保序回归
  • feature_selection:特征选择
  • multiclass:多类多标签算法

以上的每个模块都包括多个算法,在调用时直接import即可,譬如:

from sklearn.svm import SVC
svc = SVC()

无监督学习(unsupervised learning)

1.

  • decomposition:矩阵因子分解
  • cluster:聚类
  • manifold:流形学习
  • mixture:高斯混合模型

2.

  • neural_network:无监督神经网络
  • density:密度估计
  • covariance:协方差估计

使用方式同上。

数据变换

1.

  • feature_extraction:特征抽取
  • feature_selection:特征选择
  • preprocess:预处理

2.

  • random_projection:随机投影
  • kernel_approximation:核逼近
  • pipline:管道流(这个严格说不算是数据变换模块)

算法类的顶层设计图

  • baseEstimator:所有评估器的父类
  • ClassifierMixin:所有分类器的父类,其子类必须实现一个score函数
  • RegressorMixin:所有回归器的父类,其子类必须实现一个score函数
  • ClusterMixin:所有聚类的父类,其子类必须实现一个fit_predict函数
  • BiClusterMixin:
  • TransformerMixin:所有数据变换的父类,其子类必须实现一个fit_transform函数
  • DensityMixin:所有密度估计相关的父类,其子类必须实现一个score函数
  • MetaEsimatorMixin:可能是出于兼容性考虑,看名字就能知道,目前里面没有内容

我们以svm和cluster为例,介绍其继承关系图:

svm

svm继承关系

        这里SVC即support vector classifier,SVR即support vector regression,svm既可以作为分类器,也可以作为回归器,所以,它们分别继承实现了ClassifierMixin和RegressorMixin。

cluster

cluster部分继承关系
        这里以MeanShift和KMeans为例,可以看到KMeans实现了TransformerMixin类,因此它有一个transform方法。

统一的API接口

        在sklearn里面,我们可以使用完全一样的接口来实现不同的机器学习算法,通俗的流程可以理解如下:

  1. 数据加载和预处理
  2. 定义分类器(回归器等等),譬如svc = svm.svc()
  3. 用训练集对模型进行训练,只需调用fit方法,svc.fit(X_train, y_train)
  4. 用训练好的模型进行预测:y_pred=svc.predict(X_test)
  5. 对模型进行性能评估:svc.score(X_test, y_test)

        模型评估中,可以通过传入一个score参数来自定义评估标准,该函数的返回值越大代表模型越好。sklearn有一些预定义的score方法,这些方法名在sklearn.metrics.SCORERS中定义,调用时只需传入相应的字符串即可,可以通过如下方式获取到所有预定义的方法名:

from sklearn.metrics import SCORERS
for i in SCORERS.keys():
    print(i)

        从下一节开始,我们将进行sklearn机器学习算法的源码解读。

题外话:上面的ABCMeta是python中实现抽象类和接口机制的一个模块,ABC是Abstract Base Class的简写,由于python自身不提供抽象类和接口机制,因此需要借助它来实现。详情请自行百度。

  • 18
    点赞
  • 95
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
sklearn Kernel Ridge是scikit-learn库中提供的一种机器学习算法,用于进行核岭回归(Kernel Ridge Regression)。核岭回归是一种使用核技巧的岭回归方法,与支持向量回归(SVR)有相似的学习形式,但损失函数不同。KRR使用的是L2正则均方误差,而SVR使用的是带L2正则的ϵ-insensitive loss。 KRR的最小二乘解可以表示为β = (K + λI)-1y,其中K是核函数,λ是正则化参数。然后,通过求解β和计算加权和w = ∑βiXi,可以得到KRR的预测结果。 在sklearn中,可以使用KernelRidge类进行核岭回归的定义和使用。该类的参数包括alpha、kernel、gamma等,可以根据需要进行调整。例如,可以通过设置参数gamma来使用高斯核函数,即rbf核函数。具体使用方法可以参考官方文档中的示例代码。 引用: :Kernel Ridge Regression(CSDN) :sklearn官方文档 :《数据挖掘——使用机器学习工具与技术》(原书第四版)<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [sklearn浅析(六)——Kernel Ridge Regression](https://blog.csdn.net/qsczse943062710/article/details/76021034)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [核岭回归 (Kernel Ridge Regression) 以及sklearnsklearn.kernel_ridge.KernelRidge用法](https://blog.csdn.net/qq_38032064/article/details/88428430)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值