如何加速训练过程

我正在使用 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))

但是训练过程非常慢,我想知道在这种情况下如何加速这个过程?或者特征向量的大小 124svm 模型来说仍然太大了吗?


回答:

尝试使用 sklearn.svm.LinearSVC

它应该能提供与 svm.SVC(kernel='linear') 非常相似的结果,但训练过程会更快(至少在 d<m 时,当 d-特征维度,m-训练样本大小)。

如果你想使用其他内核,比如 rbf,你就不能使用 LinearSVC

然而,你可以增加内核缓存大小:内核缓存的大小对大型问题的运行时间有很大影响。如果你有足够的可用 RAM,建议将 cache_size 设置为高于默认值 200(MB) 的值,例如 500(MB) 或 1000(MB)。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注