gpt4 book ai didi

python - Scikit-learn:线性_模型.SGDClassifier():ValueError:调用partial_fit()时ndarray不是C连续的

转载 作者:行者123 更新时间:2023-11-30 09:30:05 25 4
gpt4 key购买 nike

我正在尝试运行 Linear_model.SGDClassifier() 并在它分类的每个示例后更新它。我的代码适用于一个小特征文件(10 个特征),但是当我给它一个更大的特征文件(大约 80000 个特征,但非常稀疏)时,它会立即给我错误,第一次调用partial_fit() 时。 p>

这就是我在伪代码中所做的:

X, y = load_svmlight_file(train_file)
classifier = linear_model.SGDClassifier()
classifier.fit(X, y)

for every test_line in test file:
test_X, test_y = getFeatures(test_line)
# This gives me a Python list for X
# and an integer label for y

print "prediction: %f" % = classifier.predict([test_X])

classifier.partial_fit(csr_matrix([test_X]),
csr_matrix([Y_GroundTruth])
classes=np.unique(y) )

我在partial_fit()行中不断收到的错误是:

  File "/bla/bla/epd/lib/python2.7/site-packages/sklearn/linear_model/stochastic_gradient.py", line 487, in partial_fit
coef_init=None, intercept_init=None)
File "/bla/bla/epd/lib/python2.7/site-packages/sklearn/linear_model/stochastic_gradient.py", line 371, in _partial_fit
sample_weight=sample_weight, n_iter=n_iter)
File "/bla/bla/epd/lib/python2.7/site-packages/sklearn/linear_model/stochastic_gradient.py", line 451, in _fit_multiclass
for i in range(len(self.classes_)))
File "/bla/bla/epd/lib/python2.7/site-packages/sklearn/externals/joblib/parallel.py", line 517, in __call__
self.dispatch(function, args, kwargs)
File "/bla/bla/epd/lib/python2.7/site-packages/sklearn/externals/joblib/parallel.py", line 312, in dispatch
job = ImmediateApply(func, args, kwargs)
File "/bla/bla/epd/lib/python2.7/site-packages/sklearn/externals/joblib/parallel.py", line 136, in __init__
self.results = func(*args, **kwargs)
File "/bla/bla/epd/lib/python2.7/site-packages/sklearn/linear_model/stochastic_gradient.py", line 284, in fit_binary
est.power_t, est.t_, intercept_decay)
File "sgd_fast.pyx", line 327, in sklearn.linear_model.sgd_fast.plain_sgd (sklearn/linear_model/sgd_fast.c:7568)
ValueError: ndarray is not C-contiguous

我还尝试输入partial.fit() Python 数组或numpy 数组(我认为默认情况下它们是C 连续的(sort=C)),但这给出了相同的结果。我认为classes属性不是问题。如果我省略它或者在硬代码中给出正确的类,则会出现相同的错误。

我确实注意到,当我打印分类器的 _coef 数组的标志时,它显示:

Flags of coef_ array:
C_CONTIGUOUS : False
F_CONTIGUOUS : True
OWNDATA : True
WRITEABLE : True
ALIGNED : True
UPDATEIFCOPY : False

我确信我做错了什么,但实际上,我不明白是什么......

感谢任何帮助!

最佳答案

郑重声明(因此这个问题似乎没有得到解答),这个问题是 previously answered在 scikit-learn 邮件列表上。这是 scikit-learn 0.14 的 SGDClassifier 中的一个错误。解决方法是将初始的 fit 替换为 partial_fit

更新:我fixed the bug几分钟前。

关于python - Scikit-learn:线性_模型.SGDClassifier():ValueError:调用partial_fit()时ndarray不是C连续的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19274471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com