我正在使用scikit-learn中的SVM函数(LinearSVC)。我的数据集和特征数量非常大,但我的PC RAM不足,导致交换,减慢了速度。请建议我如何处理这个问题(除了增加RAM)。
我正在使用scikit-learn中的SVM函数(LinearSVC)。我的数据集和特征数量非常大,但我的PC RAM不足,导致交换,减慢了速度。请建议我如何处理这个问题(除了增加RAM)。
SVC
。在 scikit-learn 中实现的(通过 libsvm 包装器)该算法需要一次性看到所有数据。partial_fit()
方法实现。一个非常接近 SVC 的在线算法的例子是随机梯度下降分类器,它在 sklearn.linear_model.SGDClassifier
中实现。通过其 partial_fit
方法,您可以逐步拟合数据,而不会遇到像 SVC
这样的一批算法中可能出现的内存问题。以下是一个示例:from sklearn.linear_model import SGDClassifier
from sklearn.datasets import make_blobs
# make some fake data
X, y = make_blobs(n_samples=1000010,
random_state=0)
# train on a subset of the data at a time
clf = SGDClassifier()
for i in range(10):
subset = slice(100000 * i, 100000 * (i + 1))
clf.partial_fit(X[subset], y[subset], classes=np.unique(y))
# predict on unseen data
y_pred = clf.predict(X[-10:])
print(y_pred)
# [2 0 1 2 2 2 1 0 1 1]
print(y[-10:])
# [2 0 1 2 2 2 1 0 1 1]
n
成为你的观察数量,让d
成为特征数量。你可以减少n
或减少d
或两者都减少。 - cel