免费大数据分析网站,郑州网站建设zhuotop,整合网络营销推广,凡客精选app下载有一些标准的流程可以实现对机器学习问题的自动化处理#xff0c;在 scikitlearn 中通过Pipeline来定义和自动化运行这些流程。本节就将介绍如何通过Pipeline实现自动化流程处理。
如何通过Pipeline来最小化数据缺失。如何构建数据准备和生成模型的Pipeline。如何构建特征选择…有一些标准的流程可以实现对机器学习问题的自动化处理在 scikitlearn 中通过Pipeline来定义和自动化运行这些流程。本节就将介绍如何通过Pipeline实现自动化流程处理。
如何通过Pipeline来最小化数据缺失。如何构建数据准备和生成模型的Pipeline。如何构建特征选择和生成模型的Pipeline。
机器学习的自动流程
在机器学习方面有一些可以采用的标准化流程这些标准化流程是从共同的问题中提炼出来的例如评估框架中的数据缺失等。在 scikit-learn中提供了自动化运行流程的工具——Pipeline。Pipeline 能够将从数据转换到评估模型的整个机器学习流程进行自动化处理。读者可以到scikit-learn的官方网站阅读关于Pipeline的章节加深对Pipeline的理解。
数据准备和生成模型的Pipeline
在机器学习的实践中有一个很常见的错误就是训练数据集与评估数据集之间的数据泄露这会影响到评估的准确度。要想避免这个问题需要有一个合适的方式把数据分离成训练数据集和评估数据集这个过程被包含在数据的准备过程中。数据准备过程是很好的理解数据和算法关系的过程举例来说当对训练数据集做标准化和正态化处理来训练算法时就应该理解并接受这同样要受评估数据集的影响。
Pipeline能够处理训练数据集与评估数据集之间的数据泄露问题通常会在数据处理过程中对分离出的所有数据子集做同样的数据处理如正态化处理。
下面将演示如何通过Pipeline来处理这个过程共分为以下两个步 骤 1正态化数据。 2训练一个线性判别分析模型。 在使用Pipeline进行流程化算法模型的评估过程中采用10折交叉验证来分离数据集。
数据集下载
其代码如下 import pandas as pd
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.linear_model import LogisticRegressionfrom sklearn.model_selection import cross_val_score, ShuffleSplit, KFold
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler#数据预处理
path D:\down\\archive\\diabetes.csv
data pd.read_csv(path)#将数据转成数组
array data.values
#分割数据去掉最后一个标签
X array[:, 0:8]Y array[:, 8]
# 分割数据集
n_splits 10# 随机数种子
seed 7kfold KFold(n_splitsn_splits, random_stateseed, shuffleTrue)steps []
steps.append((Standardize, StandardScaler()))
steps.append((lda,LinearDiscriminantAnalysis()))model Pipeline(steps)result cross_val_score(model, X, Y, cvkfold)print(算法评估结果%.3f (%.3f) % (result.mean(), result.std()))
Pipeline的各个步骤通过列表参数传递给Pipeline实例并通过 Pipeline进行流程化处理过程。运行结果
算法评估结果0.767 (0.048)特征选择和生成模型的Pipeline
特征选择也是一个容易受到数据泄露影响的过程。和数据准备一样特征选择时也必须确保数据的稳固性Pipeline 也提供了一个工具FeatureUnion来保证数据特征选择时数据的稳固性。下面是一个在数据选择过程中保持数据稳固性的例子。
这个过程包括以下四个步骤 1通过主要成分分析进行特征选择。 2通过统计选择进行特征选择。 3特征集合。 4生成一个逻辑回归模型。
在本例中也采用10折交叉验证来分离训练数据集和评估数据集。
代码如下 import pandas as pd
from sklearn.decomposition import PCA
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.feature_selection import SelectKBest
from sklearn.linear_model import LogisticRegressionfrom sklearn.model_selection import cross_val_score, ShuffleSplit, KFold
from sklearn.pipeline import Pipeline, FeatureUnion
from sklearn.preprocessing import StandardScaler#数据预处理
path D:\down\\archive\\diabetes.csv
data pd.read_csv(path)#将数据转成数组
array data.values
#分割数据去掉最后一个标签
X array[:, 0:8]Y array[:, 8]
# 分割数据集
n_splits 10# 随机数种子
seed 7kfold KFold(n_splitsn_splits, random_stateseed, shuffleTrue)features []
features.append((PCA, PCA(n_components3)))
#添加select_best
features.append((select_best, SelectKBest(k6)))steps []
steps.append((feature_union, FeatureUnion(features)))steps.append((logistic, LogisticRegression()))model Pipeline(steps)result cross_val_score(model, X, Y, cvkfold)print(算法评估结果%.3f (%.3f) % (result.mean(), result.std()))
运行结果 此处先创建了FeatureUnion然后将其作为Pipeline的一个生成步骤。
算法评估结果0.771 (0.048)本节学习了通过 scikit-learn 中的 Pipeline 进行自动流程化数据准备和特征选择的过程。接下来将探讨针对要处理的问题如何提高机器学习算法的准确度。