一:pipeline流水线的功能:
1.跟踪记录各步骤的操作(以方便地重现实验结果)
2.对各步骤进行一个封装, 比如将特征提取、归一化、分类组织在一起形成一个典型的机器学习问题工作流。
1.跟踪记录各步骤的操作(以方便地重现实验结果)
2.对各步骤进行一个封装, 比如将特征提取、归一化、分类组织在一起形成一个典型的机器学习问题工作流。
3.可以把grid search 用在pipeline中所有的estimators参数的参数组合上面
二:pipeline使用的一个实例
from sklearn import svm
from sklearn.datasets import samples_generator #引入生成数据集
from sklearn.feature_selection import SelectKBest #特征选择,选出最佳的K个特征
from sklearn.feature_selection import f_regression#f_regression(单因素线性回归试验)用作回归 chi2卡方检验,f_classif(方差分析的F值)等用作分类
from sklearn.pipeline import Pipeline
X, y = samples_generator.make_classification(
# n_samples=100 #样本数
# n_features=100 #特征数量(自变量个数)
# n_targets=3 #因变量个数
# bias=1 #偏差(截距)
# coef=True #是否输出coef回归系数,
n_informative=5, #相关特征(相关自变量个数)即参与了建模型的特征数
n_redundant=0, #冗余数量
random_state=42) #随机种子,不需要调该参数而是固定之后,再训练模型,可实现可重复训练。
print(X.shape) #100行20列
print(y) #100行1列
anova_filter = SelectKBest(f_regression, k=5) #方差(anova)分析
clf = svm.SVC(kernel='linear') #SVC分类 SVR回归
anova_svm = Pipeline(steps=[
('anova', anova_filter),
('svc', clf)
])
anova_svm.set_params(anova__k=10, svc__C=.1).fit(X, y) #parameters变量里面的key都有一个前缀,该前缀就是在Pipeline中定义的操作名
prediction = anova_svm.predict(X)
print(prediction)
print(anova_svm.score(X, y)) #0.83
print(anova_svm.named_steps['anova'].get_support())#20个特征中选出的10个特征
# [False False True True False False True True False True False
# True True False True False True True False False]
anova_svm.named_steps.anova.get_support() #同样是输出选择的10个特征
from sklearn import linear_model
clf = linear_model.LinearRegression()
X = [[0,0],[1,1],[2,2]] >>> y = [0,1,2]
clf.fit(X,y,sample_weight = None)#则是每条测试数据的权重,同样以array格式传入。
print(clf.coef_) #[ 0.5 0.5]存放回归系数,
print(clf.intercept_)# 1.11022302463e-16 存放截距。