python中的SGD分类器和SGD回归器有什么区别?

时间:2019-02-15 06:50:11

标签: python-3.x machine-learning scikit-learn

python sklearn中的SGD分类器和SGD回归器有什么区别?我们还可以设置批处理大小以提高它们的性能吗?

3 个答案:

答案 0 :(得分:1)

好吧,这就是名字。 SGD分类器是在分类问题中使用SGD(每次采样损失的梯度并一次更新模型)进行优化(训练)的模型。它可以表示使用loss参数定义的各种分类模型(SVM,逻辑回归...)。默认情况下,它表示线性SVM。 SGD Regressor是使用SGD对回归任务进行优化(训练)的模型。它基本上是一个线性模型,随着学习速率的下降而不断更新。

答案 1 :(得分:1)

SGD {Stochastic Gradient Descent}是一种优化方法,机器学习算法或模型用于优化损失函数。

在scikit-learn库中,这些模型SGDClassifierSGDRegressor可能会使您误以为SGD是分类器和回归器。

但事实并非如此。

SGDClassifier-它是由SGD优化的classifier SGDRegressor-它是由SGD优化的regressor

随机梯度下降 {SGD}不支持批量训练,一次仅以单个训练示例为例,与{batch} 梯度下降不同。

使用sklearn部分拟合的示例

from sklearn.linear_model import SGDClassifier
import random
clf2 = SGDClassifier(loss='log') # shuffle=True is useless here
shuffledRange = range(len(X))
n_iter = 5
for n in range(n_iter):
    random.shuffle(shuffledRange)
    shuffledX = [X[i] for i in shuffledRange]
    shuffledY = [Y[i] for i in shuffledRange]
    for batch in batches(range(len(shuffledX)), 10000):
        clf2.partial_fit(shuffledX[batch[0]:batch[-1]+1], shuffledY[batch[0]:batch[-1]+1], classes=numpy.unique(Y))

答案 2 :(得分:0)

分类器预测一些数据属于哪个类。

this picture is a cat (not a dog)

回归器通常会预测其所属类别的概率

this picture with 99% of probability is a cat