如何加快训练过程
how to speed up training process
我正在使用 sklearn
训练分类模型,数据形状和训练管道是:
clf = Pipeline([
("imputer", Imputer(missing_values='NaN', strategy="mean", axis=0)),
('feature_selection', VarianceThreshold(threshold=(.97 * (1 - .97)))),
('scaler', StandardScaler()),
('classification', svm.SVC(kernel='linear', C=1))])
print X.shape, y.shape
(59381, 895) (59381,)
我已经检查过 feature_selection
会将特征向量大小从 895
减小到 124
feature_selection = Pipeline([
("imputer", Imputer(missing_values='NaN', strategy="mean", axis=0)),
('feature_selection', VarianceThreshold(threshold=(.97 * (1 - .97))))
])
feature_selection.fit_transform(X).shape
(59381, 124) (59381,)
然后我尝试获得如下准确度
scores = cross_validation.cross_val_score(clf, X, y)
print("Accuracy: %0.2f (+/- %0.2f)" % (scores.mean(), scores.std() * 2))
但是训练过程很慢,我想知道在这种情况下要加快过程吗?或者特征向量 124
的大小对于 svm
模型来说仍然太大?
尝试使用 sklearn.svm.LinearSVC
。
它假设给出与 svm.SVC(kernel='linear')
非常相似的结果,但训练过程会更快(至少在 d<m
时,当 d-特征维度和 m- 训练样本大小时)。
如果你想使用其他内核,比如rbf
,你不能使用LinearSVC
。
但是,您可以添加内核缓存大小:对于较大的问题,内核缓存的大小对 运行 次有很大影响。如果您有足够的 RAM,建议将 cache_size
设置为高于默认值 200(MB) 的值,例如 500(MB) 或 1000(MB)。
我正在使用 sklearn
训练分类模型,数据形状和训练管道是:
clf = Pipeline([
("imputer", Imputer(missing_values='NaN', strategy="mean", axis=0)),
('feature_selection', VarianceThreshold(threshold=(.97 * (1 - .97)))),
('scaler', StandardScaler()),
('classification', svm.SVC(kernel='linear', C=1))])
print X.shape, y.shape
(59381, 895) (59381,)
我已经检查过 feature_selection
会将特征向量大小从 895
减小到 124
feature_selection = Pipeline([
("imputer", Imputer(missing_values='NaN', strategy="mean", axis=0)),
('feature_selection', VarianceThreshold(threshold=(.97 * (1 - .97))))
])
feature_selection.fit_transform(X).shape
(59381, 124) (59381,)
然后我尝试获得如下准确度
scores = cross_validation.cross_val_score(clf, X, y)
print("Accuracy: %0.2f (+/- %0.2f)" % (scores.mean(), scores.std() * 2))
但是训练过程很慢,我想知道在这种情况下要加快过程吗?或者特征向量 124
的大小对于 svm
模型来说仍然太大?
尝试使用 sklearn.svm.LinearSVC
。
它假设给出与 svm.SVC(kernel='linear')
非常相似的结果,但训练过程会更快(至少在 d<m
时,当 d-特征维度和 m- 训练样本大小时)。
如果你想使用其他内核,比如rbf
,你不能使用LinearSVC
。
但是,您可以添加内核缓存大小:对于较大的问题,内核缓存的大小对 运行 次有很大影响。如果您有足够的 RAM,建议将 cache_size
设置为高于默认值 200(MB) 的值,例如 500(MB) 或 1000(MB)。