机器学习实用程序库
ml-tooling的Python项目详细描述
模型工具库
" rel="nofollow"> " rel="nofollow">
安装
使用pip安装:
PIP安装ML工具
内容
变压器
- 与scikit学习管道一起使用的变压器库
模型基类
- 用于子类化的生产基类-保证API中使用的接口
绘图功能
- 用于生成好的常用绘图(如roc_曲线和混淆矩阵)的函数
模型数据
定义模型的基类。 子类必须定义两个方法:
获取预测数据()
函数,给定一个输入,获取相应的特征。用于预测看不见的观察结果
获取培训数据()
检索所有训练数据的函数。用于培训和评估模型
示例用法
使用modeldata定义一个类并实现两个必需的方法。 在这里,我们只需使用sklearn.datasets在波士顿数据集上实现线性回归
fromml_toolingimportModelDatafromsklearn.datasetsimportload_bostonfromsklearn.linear_modelimportLinearRegression,Ridge,LassoLars# Define a new classclassBostonModel(ModelData):defget_prediction_data(self,idx):x,_=load_boston(return_X_y=True)returnx[idx]# Return given observationdefget_training_data(self):returnload_boston(return_X_y=True)# Use our new class to implement a given sklearn compatible estimatorlinear_boston=BostonModel(LinearRegression())results=linear_boston.score_estimator()# Visualize resultsresults.plot.residuals()results.plot.prediction_error()# Save estimatorlinear_boston.save_estimator()# Recreate estimatorBostonModel.load_estimator('.')# Train Different models and get the best performingestimators_to_try=[LinearRegression(),Ridge(),LassoLars()]# best_estimator will be BostonModel instantiated with the highest scoring model. all_results is a list of all results best_estimator,alL_results=BostonModel.test_estimators(estimators_to_try,metric='neg_mean_squared_error')alL_results.to_dataframe(params=False)
配置
ml_工具实现了许多用于建模的默认设置。
您可以通过访问.config属性来查看配置。 只需修改相关配置即可更改此配置。
BostonModel.config.RANDOM_STATE=2
配置选项
冗长
默认为0。详细sklearn输出的级别
分类器度量
默认为"精确"。用于分类器问题的度量
回归度量
默认为"r2"。回归问题中要使用的度量
交叉验证
默认为10。要使用的交叉验证迭代次数
样式表
默认为内置ALM品牌样式。要在绘图中使用的matplotlib样式表的路径
n_个作业
默认为-1。在多处理情况下使用的核心数。
测试尺寸
默认为0.25。作为测试数据的数据百分比。
随机状态
默认为42。要使用的随机状态种子。
运行目录
默认为"./运行"。存储运行日志文件的文件夹
型号U DIR
默认为"./models"。存储腌制模型的文件夹
log
默认为false。切换是否登录到文件。设置为真
如果希望记录每次运行,则使用.log
上下文管理器,用于切换一次运行。
方法
基类实现了许多有用的方法
保存估计器(路径=无,文件名=无)
将模型另存为二进制文件。默认为当前工作目录,
文件名为<;类名>;\ult;模型名>;\ult;git\u hash>;.pkl
但是
可以提供自定义文件名。
加载估计器(路径)
用joblib pickled模型实例化类。 如果未指定路径,则搜索与模式匹配的最新文件的路径
得分估计器(metric='accurity',cv=false)
加载所有训练数据并在其上训练模型,使用train_test split。 返回包含所有结果参数的结果对象 默认为非交叉验证评分。如果要交叉验证,请将折叠次数传递给cv
训练估计器()
加载所有训练数据并在所有数据上训练模型。 通常用作模型优化完成时的最后一步。 将.result属性设置为none
进行预测(*args)
对给定的输入进行预测。例如客户编号。
传递给实现的get_prediction_data()
方法,并调用估计器上的.predict()
测试估计器([model1,model2],metric='accurity')
在每个模型上运行score_estimator(),保存结果。 返回所有结果的最佳模型和结果组
网格搜索(param_grid)
使用传入的参数网格在模型上运行GridSearch。 该功能将确保它也能在管道内工作。
设置估计器()
由用户设置估计器实现的是加载未训练模型的类方法。 通常,这将设置一个管道和选定的模型,以便于培训
回到前面的bostonmodel示例,让我们实现一个setup_估计器方法
fromml_toolingimportModelDatafromsklearn.datasetsimportload_bostonfromsklearn.preprocessingimportStandardScalerfromsklearn.linear_modelimportLinearRegressionfromsklearn.pipelineimportPipelineimportpandasaspdclassBostonModel(ModelData):defget_prediction_data(self,idx):data=load_boston()df=pd.DataFrame(data=data.data,columns=data.feature_names)returndf.iloc[idx]# Return given observationdefget_training_data(self):data=load_boston()returnpd.DataFrame(data=data.data,columns=data.feature_names),data.target@classmethoddefsetup_estimator(cls):pipeline=Pipeline([('scaler',StandardScaler()),('clf',LinearRegression())])returncls(pipeline)
在这种额外的设置下,很容易加载未经训练的模型来训练它:
model=BostonModel.setup_estimator()model.train_estimator()
日志(日志目录)
log()
是一个上下文管理器,允许您为随后的任何评分方法打开日志记录。
您可以传递日志目录来指定要存储模型的子文件夹。输出是一个yaml
文件记录模型参数、包版本号、度量和其他有用信息
用法示例:
model=BostonModel.setup_estimator()withmodel.log('score'):model.score_estimator()
这将把model.score_estimator()的结果保存到
runs/score/
可视化结果
当一个模型被训练时,它返回一个结果对象。 根据模型的类型,该对象有许多可视化选项:
这里列出的任何可视化工具在ml\u tooling.plots
中也有一个功能对应的工具。
例如,如果您想使用函数绘制混淆矩阵,而不使用
使用ml_tooling modeldata方法,您可以
来自ml_tooling.plots import plot_confusion矩阵
这些功能对应项都反映了sklearn metrics api,采用y_target和y_pred 作为参数
fromml_tooling.plotsimportplot_confusion_matriximportnumpyasnpy_true=np.array([1,0,1,0])y_pred=np.array([1,0,0,0])plot_confusion_matrix(y_true,y_pred)
分类器
roc_曲线(**kwargs)
:可视化分类模型的roc曲线。模型必须实现一个
predict_proba
方法。任何夸克都会传递到matplotlib。pr_曲线(**kwargs)
:可视化分类模型的精确召回曲线。模型必须实现一个
predict_proba
方法。任何夸克都会传递到matplotlib。混淆矩阵(标准化=真,**kwargs)
:可视化分类模型的混淆矩阵。
规范化
确定是否规范化带注释的类计数。任何夸克都会传递到matplotlib。功能重要性(示例,值=真,顶部=无,底部=无,N U作业覆盖=无,**kwargs)
:使用置换计算每个要素的重要性。重要性是以模型度量的下降来衡量的。
样本
确定要使用的样本数,并且必须设置 如果samples=none
则使用原始数据集,但不建议用于小型数据集。 如果samples
是介于0和1之间的一个float
值,则通过从原始数据集重新采样和替换来生成一个新的较小的数据集。这不建议用于小数据集,但可能适用于非常大的数据集。 如果将samples
设置为int
则通过从原始数据中重新采样和替换来生成大小为samples
的新数据集。推荐用于小数据集,以确保对特征重要性的稳定估计。 如果top_n
是一个整数,则返回
top_n
功能;如果top_n
是(0,1)
之间的一个浮点数,则返回
top_n
功能百分比。如果底部特征是
整数,则返回
底部特征;如果
底部特征是
浮动特征(0,1)
,则返回底部特征百分比。 将
n_jobs_overwrite
设置为int
将覆盖模型设置的设置。提升曲线(**kwargs)
:可视化分类模型的提升曲线。模型必须实现一个
predict_proba
方法。任何夸克都会传递到matplotlib。
回归函数
预测错误(**kwargs)
:可视化回归模型的预测误差。任何夸克都会传递到matplotlib。
残差(**kwargs)
:可视化回归模型的残差。任何夸克都会传递到matplotlib。
功能重要性(示例,值=真,顶部=无,底部=无,N U作业覆盖=无,**kwargs)
:使用置换计算每个要素的重要性。重要性是以模型度量的下降来衡量的。
样本
确定要使用的样本数,并且必须进行设置。如果
samples=none
则使用不建议用于小数据集的原始数据集。如果
samples
是介于0和1之间的一个float
值,则通过从原始数据集重新采样和替换来生成一个新的较小的数据集。这不建议用于小数据集,但可能适用于非常大的数据集。如果将
samples
设置为int
则通过从原始数据中重新采样和替换来生成大小为samples
的新数据集。建议用于小型数据集,以确保对功能重要性的稳定估计。如果
top_n
是一个整数,则返回
top_n
功能;如果top_n
是(0,1)
之间的一个浮点数,则返回
top_n
功能百分比。如果底部的
是一个整数
,则返回底部的
功能;如果底部的
是介于(0,1)
之间的一个浮动
,则返回底部的
功能百分比。将
n_jobs_overwrite
设置为int
将覆盖模型设置的设置。
变压器
库还提供了许多用于在管道中处理数据帧的转换器
选择
列选择器-提供要在管道中传递的列的列表
示例
fromml_tooling.transformersimportSelectimportpandasaspddf=pd.DataFrame({"id":[1,2,3,4],"status":["OK","Error","OK","Error"],"sales":[2000,3000,4000,5000]})select=Select(['id','status'])select.fit_transform(df)
Out[1]:
id status
0 1 OK
1 2 Error
2 3 OK
3 4 Error
圆角
用给定值或策略填充NA值。必须提供价值或策略。
值示例
fromml_tooling.transformersimportFillNAimportpandasaspdimportnumpyasnpdf=pd.DataFrame({"id":[1,2,3,4],"status":["OK","Error","OK","Error"],"sales":[2000,3000,4000,np.nan]})fill_na=FillNA(value=0)fill_na.fit_transform(df)
fromml_toolingimportModelDatafromsklearn.datasetsimportload_bostonfromsklearn.linear_modelimportLinearRegression,Ridge,LassoLars# Define a new classclassBostonModel(ModelData):defget_prediction_data(self,idx):x,_=load_boston(return_X_y=True)returnx[idx]# Return given observationdefget_training_data(self):returnload_boston(return_X_y=True)# Use our new class to implement a given sklearn compatible estimatorlinear_boston=BostonModel(LinearRegression())results=linear_boston.score_estimator()# Visualize resultsresults.plot.residuals()results.plot.prediction_error()# Save estimatorlinear_boston.save_estimator()# Recreate estimatorBostonModel.load_estimator('.')# Train Different models and get the best performingestimators_to_try=[LinearRegression(),Ridge(),LassoLars()]# best_estimator will be BostonModel instantiated with the highest scoring model. all_results is a list of all results best_estimator,alL_results=BostonModel.test_estimators(estimators_to_try,metric='neg_mean_squared_error')alL_results.to_dataframe(params=False)0
策略示例
内置的策略有"mean"、"median"、"most_freq"、"max"和"min"。"mean"的一个例子是:
fromml_toolingimportModelDatafromsklearn.datasetsimportload_bostonfromsklearn.linear_modelimportLinearRegression,Ridge,LassoLars# Define a new classclassBostonModel(ModelData):defget_prediction_data(self,idx):x,_=load_boston(return_X_y=True)returnx[idx]# Return given observationdefget_training_data(self):returnload_boston(return_X_y=True)# Use our new class to implement a given sklearn compatible estimatorlinear_boston=BostonModel(LinearRegression())results=linear_boston.score_estimator()# Visualize resultsresults.plot.residuals()results.plot.prediction_error()# Save estimatorlinear_boston.save_estimator()# Recreate estimatorBostonModel.load_estimator('.')# Train Different models and get the best performingestimators_to_try=[LinearRegression(),Ridge(),LassoLars()]# best_estimator will be BostonModel instantiated with the highest scoring model. all_results is a list of all results best_estimator,alL_results=BostonModel.test_estimators(estimators_to_try,metric='neg_mean_squared_error')alL_results.to_dataframe(params=False)1
fromml_toolingimportModelDatafromsklearn.datasetsimportload_bostonfromsklearn.linear_modelimportLinearRegression,Ridge,LassoLars# Define a new classclassBostonModel(ModelData):defget_prediction_data(self,idx):x,_=load_boston(return_X_y=True)returnx[idx]# Return given observationdefget_training_data(self):returnload_boston(return_X_y=True)# Use our new class to implement a given sklearn compatible estimatorlinear_boston=BostonModel(LinearRegression())results=linear_boston.score_estimator()# Visualize resultsresults.plot.residuals()results.plot.prediction_error()# Save estimatorlinear_boston.save_estimator()# Recreate estimatorBostonModel.load_estimator('.')# Train Different models and get the best performingestimators_to_try=[LinearRegression(),Ridge(),LassoLars()]# best_estimator will be BostonModel instantiated with the highest scoring model. all_results is a list of all results best_estimator,alL_results=BostonModel.test_estimators(estimators_to_try,metric='neg_mean_squared_error')alL_results.to_dataframe(params=False)2
分类
通过pd.categorical对分类值执行一次热编码。 将设置培训数据中未找到的所有分类值至0
示例
fromml_toolingimportModelDatafromsklearn.datasetsimportload_bostonfromsklearn.linear_modelimportLinearRegression,Ridge,LassoLars# Define a new classclassBostonModel(ModelData):defget_prediction_data(self,idx):x,_=load_boston(return_X_y=True)returnx[idx]# Return given observationdefget_training_data(self):returnload_boston(return_X_y=True)# Use our new class to implement a given sklearn compatible estimatorlinear_boston=BostonModel(LinearRegression())results=linear_boston.score_estimator()# Visualize resultsresults.plot.residuals()results.plot.prediction_error()# Save estimatorlinear_boston.save_estimator()# Recreate estimatorBostonModel.load_estimator('.')# Train Different models and get the best performingestimators_to_try=[LinearRegression(),Ridge(),LassoLars()]# best_estimator will be BostonModel instantiated with the highest scoring model. all_results is a list of all results best_estimator,alL_results=BostonModel.test_estimators(estimators_to_try,metric='neg_mean_squared_error')alL_results.to_dataframe(params=False)3
fromml_toolingimportModelDatafromsklearn.datasetsimportload_bostonfromsklearn.linear_modelimportLinearRegression,Ridge,LassoLars# Define a new classclassBostonModel(ModelData):defget_prediction_data(self,idx):x,_=load_boston(return_X_y=True)returnx[idx]# Return given observationdefget_training_data(self):returnload_boston(return_X_y=True)# Use our new class to implement a given sklearn compatible estimatorlinear_boston=BostonModel(LinearRegression())results=linear_boston.score_estimator()# Visualize resultsresults.plot.residuals()results.plot.prediction_error()# Save estimatorlinear_boston.save_estimator()# Recreate estimatorBostonModel.load_estimator('.')# Train Different models and get the best performingestimators_to_try=[LinearRegression(),Ridge(),LassoLars()]# best_estimator will be BostonModel instantiated with the highest scoring model. all_results is a list of all results best_estimator,alL_results=BostonModel.test_estimators(estimators_to_try,metric='neg_mean_squared_error')alL_results.to_dataframe(params=False)4
functransformer
对每一列应用给定的函数
示例
fromml_toolingimportModelDatafromsklearn.datasetsimportload_bostonfromsklearn.linear_modelimportLinearRegression,Ridge,LassoLars# Define a new classclassBostonModel(ModelData):defget_prediction_data(self,idx):x,_=load_boston(return_X_y=True)returnx[idx]# Return given observationdefget_training_data(self):returnload_boston(return_X_y=True)# Use our new class to implement a given sklearn compatible estimatorlinear_boston=BostonModel(LinearRegression())results=linear_boston.score_estimator()# Visualize resultsresults.plot.residuals()results.plot.prediction_error()# Save estimatorlinear_boston.save_estimator()# Recreate estimatorBostonModel.load_estimator('.')# Train Different models and get the best performingestimators_to_try=[LinearRegression(),Ridge(),LassoLars()]# best_estimator will be BostonModel instantiated with the highest scoring model. all_results is a list of all results best_estimator,alL_results=BostonModel.test_estimators(estimators_to_try,metric='neg_mean_squared_error')alL_results.to_dataframe(params=False)5
fromml_toolingimportModelDatafromsklearn.datasetsimportload_bostonfromsklearn.linear_modelimportLinearRegression,Ridge,LassoLars# Define a new classclassBostonModel(ModelData):defget_prediction_data(self,idx):x,_=load_boston(return_X_y=True)returnx[idx]# Return given observationdefget_training_data(self):returnload_boston(return_X_y=True)# Use our new class to implement a given sklearn compatible estimatorlinear_boston=BostonModel(LinearRegression())results=linear_boston.score_estimator()# Visualize resultsresults.plot.residuals()results.plot.prediction_error()# Save estimatorlinear_boston.save_estimator()# Recreate estimatorBostonModel.load_estimator('.')# Train Different models and get the best performingestimators_to_try=[LinearRegression(),Ridge(),LassoLars()]# best_estimator will be BostonModel instantiated with the highest scoring model. all_results is a list of all results best_estimator,alL_results=BostonModel.test_estimators(estimators_to_try,metric='neg_mean_squared_error')alL_results.to_dataframe(params=False)6
可以为函数提供关键字参数。
fromml_toolingimportModelDatafromsklearn.datasetsimportload_bostonfromsklearn.linear_modelimportLinearRegression,Ridge,LassoLars# Define a new classclassBostonModel(ModelData):defget_prediction_data(self,idx):x,_=load_boston(return_X_y=True)returnx[idx]# Return given observationdefget_training_data(self):returnload_boston(return_X_y=True)# Use our new class to implement a given sklearn compatible estimatorlinear_boston=BostonModel(LinearRegression())results=linear_boston.score_estimator()# Visualize resultsresults.plot.residuals()results.plot.prediction_error()# Save estimatorlinear_boston.save_estimator()# Recreate estimatorBostonModel.load_estimator('.')# Train Different models and get the best performingestimators_to_try=[LinearRegression(),Ridge(),LassoLars()]# best_estimator will be BostonModel instantiated with the highest scoring model. all_results is a list of all results best_estimator,alL_results=BostonModel.test_estimators(estimators_to_try,metric='neg_mean_squared_error')alL_results.to_dataframe(params=False)7
fromml_toolingimportModelDatafromsklearn.datasetsimportload_bostonfromsklearn.linear_modelimportLinearRegression,Ridge,LassoLars# Define a new classclassBostonModel(ModelData):defget_prediction_data(self,idx):x,_=load_boston(return_X_y=True)returnx[idx]# Return given observationdefget_training_data(self):returnload_boston(return_X_y=True)# Use our new class to implement a given sklearn compatible estimatorlinear_boston=BostonModel(LinearRegression())results=linear_boston.score_estimator()# Visualize resultsresults.plot.residuals()results.plot.prediction_error()# Save estimatorlinear_boston.save_estimator()# Recreate estimatorBostonModel.load_estimator('.')# Train Different models and get the best performingestimators_to_try=[LinearRegression(),Ridge(),LassoLars()]# best_estimator will be BostonModel instantiated with the highest scoring model. all_results is a list of all results best_estimator,alL_results=BostonModel.test_estimators(estimators_to_try,metric='neg_mean_squared_error')alL_results.to_dataframe(params=False)8
宾纳
将数字数据放入提供的存储箱中
示例
fromml_toolingimportModelDatafromsklearn.datasetsimportload_bostonfromsklearn.linear_modelimportLinearRegression,Ridge,LassoLars# Define a new classclassBostonModel(ModelData):defget_prediction_data(self,idx):x,_=load_boston(return_X_y=True)returnx[idx]# Return given observationdefget_training_data(self):returnload_boston(return_X_y=True)# Use our new class to implement a given sklearn compatible estimatorlinear_boston=BostonModel(LinearRegression())results=linear_boston.score_estimator()# Visualize resultsresults.plot.residuals()results.plot.prediction_error()# Save estimatorlinear_boston.save_estimator()# Recreate estimatorBostonModel.load_estimator('.')# Train Different models and get the best performingestimators_to_try=[LinearRegression(),Ridge(),LassoLars()]# best_estimator will be BostonModel instantiated with the highest scoring model. all_results is a list of all results best_estimator,alL_results=BostonModel.test_estimators(estimators_to_try,metric='neg_mean_squared_error')alL_results.to_dataframe(params=False)9
BostonModel.config.RANDOM_STATE=20
重命名器
将列重命名为等于传递列表-必须按顺序进行
示例
BostonModel.config.RANDOM_STATE=21
BostonModel.config.RANDOM_STATE=22
日期编码器
基于日期字段添加年、月、日、周列。每个日期类型都可以在初始值设定项中切换
示例
BostonModel.config.RANDOM_STATE=23
BostonModel.config.RANDOM_STATE=24
频率特性
将列转换为规范化频率
示例
BostonModel.config.RANDOM_STATE=25
BostonModel.config.RANDOM_STATE=26
DFFeatureUnion
与数据帧等效的FeatureUnion。连接多个变压器的结果
示例
BostonModel.config.RANDOM_STATE=27
BostonModel.config.RANDOM_STATE=28
dfrowfunc
pandas数据帧上的按行操作。策略可以是预定义的,也可以是可调用的。如果行中的某些元素为NaN,则内置策略将忽略这些元素。
示例
BostonModel.config.RANDOM_STATE=29
fromml_toolingimportModelDatafromsklearn.datasetsimportload_bostonfromsklearn.preprocessingimportStandardScalerfromsklearn.linear_modelimportLinearRegressionfromsklearn.pipelineimportPipelineimportpandasaspdclassBostonModel(ModelData):defget_prediction_data(self,idx):data=load_boston()df=pd.DataFrame(data=data.data,columns=data.feature_names)returndf.iloc[idx]# Return given observationdefget_training_data(self):data=load_boston()returnpd.DataFrame(data=data.data,columns=data.feature_names),data.target@classmethoddefsetup_estimator(cls):pipeline=Pipeline([('scaler',StandardScaler()),('clf',LinearRegression())])returncls(pipeline)0
内置策略是"sum"、"min"和"max"。策略也可以是可调用的:
fromml_toolingimportModelDatafromsklearn.datasetsimportload_bostonfromsklearn.preprocessingimportStandardScalerfromsklearn.linear_modelimportLinearRegressionfromsklearn.pipelineimportPipelineimportpandasaspdclassBostonModel(ModelData):defget_prediction_data(self,idx):data=load_boston()df=pd.DataFrame(data=data.data,columns=data.feature_names)returndf.iloc[idx]# Return given observationdefget_training_data(self):data=load_boston()returnpd.DataFrame(data=data.data,columns=data.feature_names),data.target@classmethoddefsetup_estimator(cls):pipeline=Pipeline([('scaler',StandardScaler()),('clf',LinearRegression())])returncls(pipeline)1
fromml_toolingimportModelDatafromsklearn.datasetsimportload_bostonfromsklearn.preprocessingimportStandardScalerfromsklearn.linear_modelimportLinearRegressionfromsklearn.pipelineimportPipelineimportpandasaspdclassBostonModel(ModelData):defget_prediction_data(self,idx):data=load_boston()df=pd.DataFrame(data=data.data,columns=data.feature_names)returndf.iloc[idx]# Return given observationdefget_training_data(self):data=load_boston()returnpd.DataFrame(data=data.data,columns=data.feature_names),data.target@classmethoddefsetup_estimator(cls):pipeline=Pipeline([('scaler',StandardScaler()),('clf',LinearRegression())])returncls(pipeline)2
二值化
如果等于给定值,则返回1的转换器,否则返回0。
示例
fromml_toolingimportModelDatafromsklearn.datasetsimportload_bostonfromsklearn.preprocessingimportStandardScalerfromsklearn.linear_modelimportLinearRegressionfromsklearn.pipelineimportPipelineimportpandasaspdclassBostonModel(ModelData):defget_prediction_data(self,idx):data=load_boston()df=pd.DataFrame(data=data.data,columns=data.feature_names)returndf.iloc[idx]# Return given observationdefget_training_data(self):data=load_boston()returnpd.DataFrame(data=data.data,columns=data.feature_names),data.target@classmethoddefsetup_estimator(cls):pipeline=Pipeline([('scaler',StandardScaler()),('clf',LinearRegression())])returncls(pipeline)3
fromml_toolingimportModelDatafromsklearn.datasetsimportload_bostonfromsklearn.preprocessingimportStandardScalerfromsklearn.linear_modelimportLinearRegressionfromsklearn.pipelineimportPipelineimportpandasaspdclassBostonModel(ModelData):defget_prediction_data(self,idx):data=load_boston()df=pd.DataFrame(data=data.data,columns=data.feature_names)returndf.iloc[idx]# Return given observationdefget_training_data(self):data=load_boston()returnpd.DataFrame(data=data.data,columns=data.feature_names),data.target@classmethoddefsetup_estimator(cls):pipeline=Pipeline([('scaler',StandardScaler()),('clf',LinearRegression())])returncls(pipeline)4