scikit-learn 的设计
2022/2/22 23:49:39
本文主要是介绍scikit-learn 的设计,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
scikit-learn 的设计
- 1 核心API Core API
- 1.1 Estimators
- 1.2 Predictors
- 1.3 Transformers
- 2 高级API Advanced API
- 2.1 Meta-estimators
- 2.2 Pipelines and feature unions
- 3.3 Model selection
1 核心API Core API
所有 scikit-learn 对象都有三个基本的接口:Estimators, Predictors 和 Transformers
1.1 Estimators
Estimators 的初始化和学习数据的过程是分开的,
初始化通过为模型公共属性赋值超参数(hyper-parameter)实现,
为便于使用,scikit-learn 为每个超参数都设置了默认值
模型学习通过 fit 方式执行,Estimators 学习到的参数作为公共属性暴露出来(如:coef_ 名字带短划线后缀),Estimators 返回其本身
因此,一个对象既是 Estimators 又是模型
from sklearn.linear_model import LogisticRegression # 模型初始化 clf = LogisticRegression(penalty='l1') # 模型学习 clf.fit(X_train, y_train)
1.2 Predictors
通过增加 predict 方法扩展了 estimator 为 predictor ,学习到参数的 estimator 可以输入数组 X_test 获得输出结果,
y_pred = clf.predict(X_test)
非监督方法也可以使用 predict 方法,如 kmeans
from sklearn.cluster import KMens km = KMens(n_clusters=10) km.fit(X_train) clust_pred = km.predict(X_test)
predictors 也实现了一些方法评估预测结果的置信度,
一些 predictors 实现 predict_proba 方法返回类别可能性
predictors 提供 score 方法用于评估结果
1.3 Transformers
Transformers 支持在预处理中进行特征选择,特征提取,特征降维
from sklearn.preprocessing import StandardScaler scaler = StandardScaler() scaler.fit(X_train) X_train = scaler.transform(X_train)
在实践中,相同的预处理方法也需要用于测试集中
X_test = scaler.transform(X_test)
因为 fit 方法返回 estimator 本身,可以使用链式操作
X_train = StrandarScaler().fit(X_train).transform(X_train)
更进一步,每一个 transformer 都提供了相当于 fit(X_train).transform(X_train) 的 fit_transform(X_train) 方法
2 高级API Advanced API
2.1 Meta-estimators
一些算法可以将其它算法作为参数,如集成学习中(决策树)、多分类、多标签分类
from sklearn.multiclass import OneVsOneClassifier ovo_lr = OneVsOneClassifier(LogisticRegression(penalty='l1'))
2.2 Pipelines and feature unions
estimator 可以由多个基础的 estimator 组合而成,
pipeline 根据最后一个 estimator 决定其自身为 predictor 或 transformer
FeatureUnion 连接多个 transformers 的输出作为一个结果
from sklearn.pipline import FeatureUnion, Pipeline from sklearn.decomposition import PCA, KernelPCA from sklearn.feature_selection import SlectKBest union = FeatureUnion([("pca", PCA()), ("kpca",KernelPCA(kernel="rbf"))]) Pipeline([("feat_union", union), ("feat_sel", SelectKBest(k=10)), ("log_reg", LogisticRegression(penalty="l2")) ]).fit(X_train, y_train).predict(X_test)
3.3 Model selection
模型选择由两个 meta-estimators 支持:GridSearchCV 和 RandomizedSearchCV
它们将输入模型作为待优化的模型,输入模型的超参数需要优化
from sklearn.grid_search import GridSearchCV from sklearn.svm import SVC param_grid = [ {"kernel": ["linear"], "C":[1, 10, 100, 1000]}, {"kernel": ["rbf"], "C":[1, 10, 100, 1000], "gamma":[0.001, 0.0001]}, ] clf = GridSearchCV(SVC(), param_grid, scoring="f1", cv=10) clf.fit(X_train, y_train) y_pred = clf.predict(X_test)
通过 best_estimator_ 获取最佳模型
这篇关于scikit-learn 的设计的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享
- 2024-11-22ansible 的archive 参数是什么意思?-icode9专业技术文章分享
- 2024-11-22ansible 中怎么只用archive 排除某个目录?-icode9专业技术文章分享
- 2024-11-22exclude_path参数是什么作用?-icode9专业技术文章分享
- 2024-11-22微信开放平台第三方平台什么时候调用数据预拉取和数据周期性更新接口?-icode9专业技术文章分享
- 2024-11-22uniapp 实现聊天消息会话的列表功能怎么实现?-icode9专业技术文章分享
- 2024-11-22在Mac系统上将图片中的文字提取出来有哪些方法?-icode9专业技术文章分享
- 2024-11-22excel 表格中怎么固定一行显示不滚动?-icode9专业技术文章分享
- 2024-11-22怎么将 -rwxr-xr-x 修改为 drwxr-xr-x?-icode9专业技术文章分享
- 2024-11-22在Excel中怎么将小数向上取整到最接近的整数?-icode9专业技术文章分享