首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SGDClassifier在MNIST中的应用

SGDClassifier在MNIST中的应用
EN

Stack Overflow用户
提问于 2017-07-24 15:21:54
回答 1查看 1.5K关注 0票数 0

我正在执行自我学习与(O'Reilly)手动机器学习w/ scikit_Learn“,目前使用不同的分类器的MNIST数据。

第94页的文本显示,SGDClassifier能够执行多类分类,并使用OvA算法。当我尝试像这样安装分类器时:

代码语言:javascript
运行
复制
sgd_clf = SGDClassifier()
sgd_clf.fit(x_train, y_train) 

我收到一个错误:

输入形状差(55000,10)。

这似乎与课文相矛盾。

数据信息

x_train.shape是55000x784,y_train.shape是55000x10,它们都是numpy.ndarray

当我安装KNeighborsClassifier时,它工作得非常完美。

SGDClassifier是否解决了多类分类问题?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-07-24 16:09:54

正如文献资料中提到的,

作为其他分类器,SGD必须安装两个数组:大小为n_samples的数组X、保存训练样本的n_features数组和包含训练样本目标值(类标签)的n_samples大小数组Y。

这意味着y是一个由类标签组成的一维数组,如下面的示例所示(取自上面的链接):

代码语言:javascript
运行
复制
>>> from sklearn.linear_model import SGDClassifier
>>> X = [[0., 0.], [1., 1.]]
>>> y = [0, 1]
>>> clf = SGDClassifier(loss="hinge", penalty="l2")
>>> clf.fit(X, y)
SGDClassifier(alpha=0.0001, average=False, class_weight=None, epsilon=0.1,
       eta0=0.0, fit_intercept=True, l1_ratio=0.15,
       learning_rate='optimal', loss='hinge', n_iter=5, n_jobs=1,
       penalty='l2', power_t=0.5, random_state=None, shuffle=True,
       verbose=0, warm_start=False)

因此,您应该将y转换为由类标签组成的向量(在本例中为0-9)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45284375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档