找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 155722|回复: 0

Scikit-Learn学得如何?程序员不容错过十大实用功能来袭 ...

[复制链接]

该用户从未签到

发表于 2020-7-22 17:40:33 | 显示全部楼层 |阅读模式

您需要 登录 才可以下载或查看,没有账号?立即注册

×

                               
登录/注册后可看大图

作者 | Rebecca Vickery封图 | CSDN 付费下载自视觉中国出品 | CSDN(ID:CSDNnews)Scikit-learn是使用最广泛的Python机器学习库之一。它拥有标准简单的界面,可用于预处理数据以及模型的训练、优化和评估。
该项目最初始自David Cournapeau在Google Summer of Code活动中开发的项目,并于2010年首次公开发布。自创建以来,该库已发展成为了一个丰富的生态系统,可用于开发机器学习模型。
随着时间的推移,该项目发展出了许多便捷的功能,变得越来越容易使用。在本文中,我将介绍你可能不太熟悉的10个最实用的功能。
Scikit-learn拥有内置数据集Scikit-learnAPI内置了各种实验以及真实的数据集。只需一行代码即可访问这些数据集,如果你正在学习或者想快速尝试新功能,那么这些数据集能助你一臂之力。
此外,你还可以使用生成器轻松生成合成的数据集,例如用于生成回归数据集的make_regression,生成聚类数据集的make_blobs,以及生成分类数据集的make_classification。
所有数据加载函数都提供了选项,可以将数据被拆分成X(特征)和y(目标)之后再返回,这样返回值就可以直接用于训练模型。
# Toy regression data set loadingfromsklearn.datasetsimportload_bostonX,y = load_boston(return_X_y =True)# Synthetic regresion data set loadingfromsklearn.datasets importmake_regressionX,y = make_regression(n_samples=10000]noise=100] random_state=0)很容易获取第三方公共数据集如果你想通过Scikit-learn直接访问各种公开的数据集,有一个便捷的功能可以让你直接从openml.org网站导入数据。该网站包含21,000多种可用于机器学习项目的数据集。
fromsklearn.datasets importfetch_openmlX,y = fetch_openml("wine"]version=1, as_frame=True, return_X_y=True)利用已训练好的分类器来训练基准模型在开发机器学习模型时,一般需要先创建一个基准模型。这个模型本质上是一个“笨”模型,通常它只能预测最常出现的类别。这个模型可以为你的“智能”模型提供一个基准,这样才能判断出模型的效果要优于随意选择的结果。
Scikit-learn包含一个处理分类任务的DummyClassifier和一个处理回归问题的DummyRegressor。
from sklearn.dummy importDummyClassifier# Fit the model on the wine dataset andreturn the model scoredummy_clf =DummyClassifier(strategy="most_frequent"] random_state=0)dummy_clf.fit(X, y)dummy_clf.score(X, y)Scikit-learn拥有自己的绘图APIScikit-learn具有内置的绘图API,所以你无需导入任何其他库即可将模型的性能显示成图表。Scikit-learn包含以下绘图工具:部分依赖图、混淆矩阵、准确率-召回率曲线以及ROC曲线。
importmatplotlib.pyplotaspltfromsklearnimportmetrics,model_selectionfromsklearn.ensemble importRandomForestClassifierfromsklearn.datasets importload_breast_cancerX,y = load_breast_cancer(return_X_y =True)X_train, X_test, y_train, y_test =model_selection.train_test_split(X, y, random_state=0)clf =RandomForestClassifier(random_state=0)clf.fit(X_train, y_train)metrics.plot_roc_curve(clf, X_test,y_test)plt.show

                               
登录/注册后可看大图

Scikit-learn拥有内置的特征选择方法提高模型性能的技术之一是仅使用最佳特征集或通过删除冗余特征来训练模型。此过程称为特征选择。
Scikit-learn拥有许多执行特征选择的函数。例如SelectPercentile。这个方法能够根据特定的统计方法选择得分最高的X百分位数特征。
fromsklearnimportmodel_selectionfromsklearn.ensemble importRandomForestClassifierfromsklearn.datasetsimportload_winefromsklearn.pipelineimportPipelinefromsklearn.preprocessing importStandardScalerfromsklearn.feature_selection importSelectPercentile, chi2X,y = load_wine(return_X_y =True)X_trasformed = SelectPercentile(chi2,percentile=60).fit_transform(X, y)通过流水线将机器学习工作流程中的所有步骤链接到一起除了提供各种机器学习的算法之外,Scikit-learn还拥有一系列用于预处理和转换数据的功能。为了促进机器学习工作流程的可重复性和简单度, Scikit-learn创建了流水线,可将大量预处理步骤与模型训练阶段链接在一起。
流水线将工作流中的所有步骤存储为单个实体,可以通过fit和predict调用。当针对流水线对象调用fit方法时,预处理步骤和模型训练会自动执行。
fromsklearnimportmodel_selectionfromsklearn.ensembleimportRandomForestClassifierfromsklearn.datasets importload_breast_cancerfromsklearn.pipelineimportPipelinefromsklearn.preprocessing importStandardScalerX,y = load_breast_cancer(return_X_y =True)X_train, X_test, y_train, y_test =model_selection.train_test_split(X, y, random_state=0)# Chain together scaling the variableswith the modelpipe = Pipeline([('scaler',StandardScaler)] ('rf', RandomForestClassifier)])pipe.fit(X_train, y_train)pipe.score(X_test, y_test)使用ColumnTransformer将不同的预处理应用到不同的特征在许多数据集中,不同类型的特征都需要应用不同的预处理步骤。例如,对于分类数据和数字数据混合而成的数据,你可能希望通过one-hot编码将分类数据转换为数字值,并调整数字变量的比例。
Scikit-learn流水线拥有一个名叫ColumnTransformer的函数,可通过索引或列名称来指定将最合适的预处理应用到哪些列。
fromsklearn.linear_model importLinearRegressionfromsklearn.datasets importfetch_openmlfromsklearn.compose importColumnTransformerfromsklearn.pipelineimportPipelinefromsklearn.imputeimportSimpleImputerfromsklearn.preprocessing importStandardScaler, OneHotEncoder# Load auto93 data set which containsboth categorical and numeric featuresX,y = fetch_openml("auto93"]version=1, as_frame=True, return_X_y=True)# Create lists of numeric andcategorical featuresnumeric_features =X.select_dtypes(include=['int64','float64',).columnscategorical_features =X.select_dtypes(include=['object',).columnsX_train, X_test, y_train, y_test =model_selection.train_test_split(X, y, random_state=0)# Create a numeric and categoricaltransformer to perform preprocessing stepsnumeric_transformer = Pipeline(steps=[('imputer', SimpleImputer(strategy='median'))]('scaler', StandardScaler)])categorical_transformer =Pipeline(steps=[('imputer', SimpleImputer(strategy='constant', fill_value='missing'))]('onehot', OneHotEncoder(handle_unknown='ignore'))])# Use the ColumnTransformer to apply tothe correct featurespreprocessor = ColumnTransformer(transformers=[('num', numeric_transformer, numeric_features)]('cat', categorical_transformer, categorical_features)])# Append regressor to the preprocessorlr = Pipeline(steps=[('preprocessor',preprocessor)]('classifier',LinearRegression)])# Fit the complete pipelinelr.fit(X_train, y_train)print("model score: %.3f"%lr.score(X_test, y_test))轻松输出流水线的HTML表示通常流水线都会非常复杂,尤其是在处理实际数据时。因此,Scikit-learn提供了一种非常便捷的方法,可帮助你将流水线中的步骤输出成HTML图表。

                               
登录/注册后可看大图

fromsklearnimportset_configset_config(display='diagram')lr将树进行可视化的绘图函数你可以利用plot_tree函数创建决策树模型中的步骤图。

                               
登录/注册后可看大图

fromsklearn.tree importDecisionTreeClassifier, plot_treefromsklearn.datasets importload_breast_cancerclf = DecisionTreeClassifierclf.fit(X_train, y_train)plot_tree(clf, filled=True)plt.show通过众多第三方库扩展Scikit-learn有许多第三方库可与Scikit-learn结合使用,并扩展其功能。
[list,
[*,category-encoders库提供了各种分类特征的预处理方法:http://contrib.scikit-learn.org/category_encoders/
[*,ELI5软件包提供了更好的模型可解释性:http://eli5.readthedocs.io/en/latest/
[/list,这两个软件包都可以直接在Scikit-learn流水线中使用。
# Pipeline using Weight of Evidencetransformer from category encodersimportcategory_encodersasce('woe', ce.woe.WOEEncoder)])print("model score: %.3f" %lr.score(X_test, y_test))感谢您的阅读!
原文:http://towardsdatascience.com/10-things-you-didnt-know-about-scikit-learn-cccc94c50e4f
本文为 CSDN 翻译,转载请注明来源出处。


点分享点点赞点在看
回复

使用道具 举报

网站地图|页面地图|Archiver|手机版|小黑屋|找资源 |网站地图

GMT+8, 2025-3-9 21:07

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表