当前位置: 首页 > 知识库问答 >
问题:

SKlearn SGD部分拟合

戚奇略
2023-03-14

我在这里做错了什么?我有一个很大的数据集,我想使用SCIKIT-Learn的SGDClassifier对其进行部分拟合

我做以下工作

from sklearn.linear_model import SGDClassifier
import pandas as pd

chunksize = 5
clf2 = SGDClassifier(loss='log', penalty="l2")

for train_df in pd.read_csv("train.csv", chunksize=chunksize, iterator=True):
    X = train_df[features_columns]
    Y = train_df["clicked"]
    clf2.partial_fit(X, Y)

我得到了错误

回溯(最近的调用为last):文件“/predict.py”,第48行,在sys.exit中(0 if main()else 1)文件“/predict.py”,第44行,在main predict()文件“/predict.py”,第38行,在predict CLF2.partial_fit(X,Y)文件“/users/anaconda/lib/python3.5/site-packages/sklearn/linear_model/stochastic_gradient.py”,第512行,在partial_fit coef_init=none,49,在_partial_fit_check_partial_fit_first_call(self,classes)文件“/users/anaconda/lib/python3.5/site-packages/sklearn/utils/multiclass.py”第297行,在_check_partial_fit_first_call中,在_check_partial_fit_first_call中引发ValueError(“classs必须在第一次调用上传递”ValueError:classes必须在第一次调用时传递给partial_fit。

共有1个答案

郑嘉年
2023-03-14

请注意,分类器在开始时不知道类的数量,因此在第一次传递时,需要使用np.unique(target)来告诉类的数量,其中target是class列。因为您正在以块的形式读取数据,所以您需要确保您的第一个块具有类标签的所有可能值,所以它可以工作!因此,您的代码将是:

for train_df in pd.read_csv("train.csv", chunksize=chunksize, iterator=True):
   X = train_df[features_columns]
   Y = train_df["clicked"]
   clf2.partial_fit(X, Y, classes=np.unique(Y))
 类似资料:
  • 有没有办法做到这一点?

  • 我试图测试一个类,它具有两个函数:和。加载,调用,然后执行一些操作并返回新的。为举例起见: 使用如何编写测试代码? 我试过: 我希望测试成功通过,并且得到(我知道scalamock用mock替换了所有现有函数,但这不是预期的行为) 编辑:我在mockito中找到了这个引用这个概念的答案,但我不确定scalamock是否支持这种嘲讽,以及为什么要反对这种嘲讽。

  • 我有以下场景: 我想在测试中覆盖公共方法methodA()的catch块。我不想更改私有方法的可见性。是否有任何方法可以使用EasyMock实现私有方法的部分模拟?或者有没有办法改变Junit类中私有方法的行为,以便在不使用mocking的情况下抛出异常? 提前谢谢。

  • 我正在为我的服务层编写单元测试。我的服务层有多个自动生成的字段。我想只模拟其中一个和其他初始化为自动驾驶。 服务接口 服务实现 测试类 我只想嘲笑productRepository字段,但不想嘲笑productManager 问题是productManager 是否可以自动初始化它们?就像它们在运行带有完全加载的上下文的Spring引导应用程序时被初始化一样。

  • 问题内容: 我正在使用并测试异步操作创建者中的API调用。 当我使用这样创建的实例时,我无法使其工作: 我会像这样消耗它: 这是我的测试文件: 而且我只能执行一个操作,因为。 我尝试了多种方法来嘲笑该方法,但没有真正知道自己在做什么。 问题答案: 好,我知道了。这是我的解决方法!我最终 没有 做任何模拟库! 创建一个模拟在: 然后在您的测试文件中,要旨将如下所示: