StandardScaler make_pipeline
StandardScaler with make_pipeline
如果我使用 make_pipeline
,我是否还需要使用 fit
和 transform
函数来拟合我的模型和转换,或者它会自己执行这些函数?
此外,StandardScaler
是否也执行归一化或仅执行缩放?
解释代码:我想应用 PCA,然后用 svm 应用规范化。
pca = PCA(n_components=4).fit(X)
X = pca.transform(X)
# training a linear SVM classifier 5-fold
from sklearn.svm import SVC
from sklearn.model_selection import cross_val_score
clf = make_pipeline(preprocessing.StandardScaler(), SVC(kernel = 'linear'))
scores = cross_val_score(clf, X, y, cv=5)
如果我不在下面的代码中使用 fit
函数,我也会感到困惑:
from sklearn.svm import SVC
from sklearn.model_selection import cross_val_score
clf = SVC(kernel = 'linear', C = 1)
scores = cross_val_score(clf, X, y, cv=5)
StandardScaler
同时进行归一化和缩放。
cross_val_score()
将为您拟合(转换)您的数据集,因此您无需显式调用它。
一种更常见的方法是将所有步骤(StandardScale、PCA、SVC)放在一个管道中,并使用 GridSearchCV
调整超参数和选择最佳参数(估计器)。
演示:
pipe = Pipeline([
('scale, StandardScaler()),
('reduce_dims', PCA(n_components=4)),
('clf', SVC(kernel = 'linear', C = 1))
])
param_grid = dict(reduce_dims__n_components=[4,6,8],
clf__C=np.logspace(-4, 1, 6),
clf__kernel=['rbf','linear'])
grid = GridSearchCV(pipe, param_grid=param_grid, cv=3, n_jobs=1, verbose=2)
grid.fit(X_train, y_train)
print(grid.score(X_test, y_test))
如果我使用 make_pipeline
,我是否还需要使用 fit
和 transform
函数来拟合我的模型和转换,或者它会自己执行这些函数?
此外,StandardScaler
是否也执行归一化或仅执行缩放?
解释代码:我想应用 PCA,然后用 svm 应用规范化。
pca = PCA(n_components=4).fit(X)
X = pca.transform(X)
# training a linear SVM classifier 5-fold
from sklearn.svm import SVC
from sklearn.model_selection import cross_val_score
clf = make_pipeline(preprocessing.StandardScaler(), SVC(kernel = 'linear'))
scores = cross_val_score(clf, X, y, cv=5)
如果我不在下面的代码中使用 fit
函数,我也会感到困惑:
from sklearn.svm import SVC
from sklearn.model_selection import cross_val_score
clf = SVC(kernel = 'linear', C = 1)
scores = cross_val_score(clf, X, y, cv=5)
StandardScaler
同时进行归一化和缩放。
cross_val_score()
将为您拟合(转换)您的数据集,因此您无需显式调用它。
一种更常见的方法是将所有步骤(StandardScale、PCA、SVC)放在一个管道中,并使用 GridSearchCV
调整超参数和选择最佳参数(估计器)。
演示:
pipe = Pipeline([
('scale, StandardScaler()),
('reduce_dims', PCA(n_components=4)),
('clf', SVC(kernel = 'linear', C = 1))
])
param_grid = dict(reduce_dims__n_components=[4,6,8],
clf__C=np.logspace(-4, 1, 6),
clf__kernel=['rbf','linear'])
grid = GridSearchCV(pipe, param_grid=param_grid, cv=3, n_jobs=1, verbose=2)
grid.fit(X_train, y_train)
print(grid.score(X_test, y_test))