当前位置:首页 > AI > 正文内容

scikit-learn中的Pipeline:构建高效、可保护的机器学习流程

邻居的猫1个月前 (12-09)AI2082

咱们运用scikit-learn进行机器学习的模型练习时,用到的数据和算法参数会依据详细的状况相应调整改变,

可是,整个模型练习的流程其实迥然不同,一般都是加载数据数据预处理特征挑选模型练习等几个环节。

假如练习的成果不尽善尽美,从数据预处理开端,再次从头练习。

今日介绍的Pipeline(中文称号:流水线),是一种将多个机器学习进程整合在一起的东西。

它能够协助咱们简化了机器学习进程。

1. 什么是 Pipeline

scikit-learn 中,Pipeline就像是一个工业生产流水线,把数据预处理特征挑选模型练习等多个环节按次序连接起来。

例如,一个典型的机器学习流程或许包括数据标准化、主成分剖析(PCA)进行特征提取,最终运用一个分类器(如支撑向量机)进行分类。

在没有Pipeline流水线的时分,你需求别离对每个进程进行处理,手动将一个进程的输出传递给下一个进程。而Pipeline答应你把这些进程封装到一个目标中,以更简练和高效的办法来处理整个机器学习流程。

从代码视点看,流水线是由一系列的(key, value)对组成。

其间key是一个自定义的称号,用于标识进程;

value是一个完成了fit_transform办法的 scikit-learn 转换器(用于数据预处理和特征提取等),或许是一个仅完成了fit办法的估量器(用于模型练习和猜测)。

2. Pipeline 的作用和优势

2.1. 简化练习流程

运用Pipeline能带来的最大的优点便是简化机器学习模型的练习流程

咱们不用在每次练习模型或许进行猜测的时分,手动地逐一调用数据预处理、特征工程和模型练习的进程。

比方下面这个示例,没有Pipeline时:

from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
import numpy as np

# 生成一些模仿数据
X = np.random.rand(100, 1)
y = 2 * X + 1 + 0.1 * np.random.randn(100, 1)

# 数据标准化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# 多项式特征扩展
poly = PolynomialFeatures(degree = 2)
X_poly = poly.fit_transform(X_scaled)
# 线性回归模型练习
model = LinearRegression()
model.fit(X_poly, y)

而运用流水线,代码能够简化为:

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
import numpy as np

# 生成一些模仿数据
X = np.random.rand(100, 1)
y = 2 * X + 1 + 0.1 * np.random.randn(100, 1)

pipeline = Pipeline([
    ('scaler', StandardScaler()),
    ('poly', PolynomialFeatures(degree = 2)),
    ('model', LinearRegression())
])
pipeline.fit(X, y)

这样不只能够削减代码量,还能使代码结构愈加明晰。

2.2. 防止数据走漏

在机器学习中,数据走漏是一个严峻的问题。

例如,在进行数据预处理和模型挑选时,假如不小心将测验数据的信息走漏到练习数据的处理进程中,会导致模型在测验集上的评价成果过于达观。

Pipeline能够保证每个进程只运用它应该运用的数据,在Pipeline中,练习数据依照进程顺次处理,测验数据也会以相同的次序和办法处理,这样就能够很好地防止数据走漏。

而在穿插验证进程中,Pipeline会主动将每个折叠(fold)的数据依照正确的进程次序进行处理。

假如手动处理各个进程,很简略在穿插验证的进程中过错地运用了悉数数据进行预处理,然后导致数据走漏。

2.3. 便当模型调参

能够将整个Pipeline当作一个模型来进行参数调整

例如,关于一个包括数据预处理和分类器的Pipeline,能够经过网格查找(Grid Search)或许随机查找(Random Search)等办法来一起调整预处理进程和分类器的参数。

再比方一个包括标准化支撑向量机分类器的Pipeline,咱们能够一起调整标准化的参数(如with_meanwith_std)和支撑向量机的参数(如Cgamma)来找到最佳的模型装备。

3. Pipeline 运用示例

示例是最好的学习材料,下面运用scikit-learn 库中的 datasets 来别离结构回归分类聚类问题的Pipeline示例。

3.1. 猜测糖尿病示例

此示例先对糖尿病数据进行标准化,然后运用线性回归模型进行房价猜测。

from sklearn.datasets import load_diabetes
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score

# 加载糖尿病数据集
diabetes = load_diabetes()
X = diabetes.data
y = diabetes.target

# 区分练习集和测验集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

pipeline = Pipeline([
    ('scaler', StandardScaler()),
    ('model', LinearRegression())
])

# 在练习集上练习模型
pipeline.fit(X_train, y_train)

# 在测验集上进行猜测
y_pred = pipeline.predict(X_test)

# 核算均方差错(MSE)来评价模型在测验集上的功能
mse = mean_squared_error(y_test, y_pred)
print("均方差错(MSE):", mse)

# 核算决定系数(R² 分数)来进一步评价模型拟合优度
r2 = r2_score(y_test, y_pred)
print("决定系数(R² 分数):", r2)

最终别离运用均方差错(MSE)和决定系数(R² 分数)这两个常见的回归评价目标来衡量模型在测验集上的功能体现,协助了解模型对糖尿病相关目标猜测的精确程度和拟合作用。

3.2. 鸢尾花分类示例

标准化鸢尾花数据,接着运用支撑向量机分类器对手鸢尾花品种进行分类。

from sklearn.datasets import load_iris
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 加载鸢尾花数据集
iris = load_iris()
X = iris.data
y = iris.target

# 区分练习集和测验集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

pipeline = Pipeline([
    ('scaler', StandardScaler()),
    ('classifier', SVC())
])

# 在练习集上练习模型
pipeline.fit(X_train, y_train)

# 在测验集上进行猜测
y_pred = pipeline.predict(X_test)

# 核算精确率来评价模型在测验集上的功能
accuracy = accuracy_score(y_test, y_pred)
print("精确率:", accuracy)

3.3. 手写数字聚类示例

先对数据进行标准化,再运用 K-Means 算法对手写数字图像数据进行聚类,这儿简略地假定聚为** 10 类**。

from sklearn.datasets import load_digits
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
from sklearn.model_selection import train_test_split

# 加载手写数字数据集
digits = load_digits()
X = digits.data

# 区分练习集和测验集(在聚类场景下,区分练习集更多是一种惯例操作示例,实践聚类剖析中依据详细需求而定)
X_train, X_test = train_test_split(X, test_size=0.2, random_state=42)

pipeline = Pipeline([
    ('scaler', StandardScaler()),
    ('clusterer', KMeans(n_clusters=10))  # 假定分为10类,由于手写数字有0-9
])

# 在练习集(这儿可看作悉数数据用于聚类学习的示例状况)上进行聚类练习
pipeline.fit(X_train)

# 获取聚类标签
cluster_labels = pipeline['clusterer'].labels_

# 简略打印测验集上部分数据的聚类标签示例
print("测验集部分数据的聚类标签示例:")
print(cluster_labels[:10])

:上面的示例我在本机的 sckilit-learn 1.5.2 版别上都运转经过。

4. 总结

Pipeline给咱们的模型练习带来了便当,

不过,为了用好Pipeline,运用时有些当地需求咱们特别留意。

首先是进程次序,数据会依照进程的次序顺次进行处理。

例如,假如你要先进行特征挑选,然后进行数据标准化,那么你需求将特征挑选进程放在标准化进程之前。假如次序过错,或许会导致模型功能下降或许无法正常运转。

其次,各个进程的接口兼容性也很重要,Pipeline中的每个进程都需求满意必定的接口要求。

关于数据预处理进程(转换器),需求完成fittransform(或许fit_transform)办法;

关于模型练习进程(估量器),需求完成fit办法。

假如自定义的进程没有正确完成这些办法,流水线在运转时会呈现过错。

最终,运用Pipeline进行参数调整时,需求留意参数的命名

Pipeline中,参数的称号是由进程称号和实践参数称号组合而成的。

例如,假如你有一个名为scaler的标准化进程,其间有一个参数with_mean,那么在参数调整时,参数称号应该是scaler__with_mean

这种命名办法能够保证正确地调整每个进程中的参数。

扫描二维码推送至手机访问。

版权声明:本文由51Blog发布,如需转载请注明出处。

本文链接:https://www.51blog.vip/?id=344

分享给朋友:

“scikit-learn中的Pipeline:构建高效、可保护的机器学习流程” 的相关文章

Sealos Devbox 基础教程:运用 Cursor 从零开发一个完好的项目

Sealos Devbox 基础教程:运用 Cursor 从零开发一个完好的项目

作者:熊猫Jay,上市公司技能负责人,破局AI 提示词、AI编程教练、通往AGI之路内容共创者 最近发现身边越来越多人尝试用 Cursor 写代码、开发小产品了。 假如想要完结商业化或引流,咱们的小东西和小产品有必要发布到互联网上,这样才干被更多人看到并运用。 可一到要布置上线,许多非技能的朋友们...

机器学习模型怎么跑,从搭建到优化

机器学习模型怎么跑,从搭建到优化

机器学习模型通常包括以下几个步骤来运行:1. 数据准备:首先需要收集和准备数据,这包括数据清洗、数据转换和数据归一化等。数据质量对模型的性能至关重要。2. 选择模型:根据问题的类型(如分类、回归、聚类等)选择合适的机器学习算法。常见的算法包括线性回归、逻辑回归、决策树、随机森林、支持向量机、神经网络...

ai透视网格工具怎么关闭,AI透视网格工具关闭指南

ai透视网格工具怎么关闭,AI透视网格工具关闭指南

AI透视网格工具通常用于增强图像编辑软件中的视觉效果,如Adobe Photoshop中的“透视网格”功能。要关闭这个工具,你可以按照以下步骤操作:1. 打开图像编辑软件,如Adobe Photoshop。2. 确保你正在使用一个支持透视网格的文档。3. 在工具栏中,找到并点击“透视网格”工具。通常...

ai修图,重塑摄影后期处理格局

ai修图,重塑摄影后期处理格局

1. 图像去噪:通过AI算法去除图像中的噪点,提高图像质量。2. 图像增强:增强图像的对比度、亮度和色彩饱和度,使图像更加生动。3. 图像修复:修复图像中的损坏、划痕或缺失部分。4. 图像风格迁移:将一种风格应用到另一种图像上,例如将一幅油画风格应用到照片上。5. 图像合成:将多张图像合成一张新的图...

机器学习模型总结

机器学习模型总结

1. 线性回归模型:线性回归模型是一种最简单的预测模型,它假设输入变量与输出变量之间存在线性关系。线性回归模型通常用于回归问题,即预测连续值。2. 决策树模型:决策树模型是一种基于树结构的分类模型,它通过一系列规则来划分数据集,并将数据点分配到不同的类别中。决策树模型易于理解和解释,但可能容易过拟合...

ai画布大小怎么改,AI画布大小调整指南

ai画布大小怎么改,AI画布大小调整指南

1. Photoshop: 打开“图像”菜单。 选择“画布大小”。 在弹出的对话框中,您可以输入新的宽度、高度和分辨率。 选择“相对”选项可以增加或减少画布的大小,而不会改变图像的当前大小。 点击“确定”应用更改。2. GIMP: 打开“图像”菜单。 选择“...