我有40000个资产的时间序列。我把数据分为训练数据和目标数据。训练数据有119天的回报,目标数据有59天。我故意把它分成这样。
列车:(119列返回,40000个不同系列)目标:(59行退货,相同的40000系列)
我运行了以下代码来拟合模型:
SVR_model = svm.SVR(kernel='rbf',C=100,gamma=.001).fit(t_train_scale.transpose(), t_test.transpose())
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-185-2a0fd827e2a4> in <module>()
1
2
----> 3 SVR_model = svm.SVR(kernel='rbf',C=100,gamma=.001).fit(t_train_scale.transpose(), t_test.transpose())
C:UsersnnayyarAnacondalibsite-packagessklearnsvmbase.pyc in fit(self, X, y, sample_weight)
174
175 seed = rnd.randint(np.iinfo('i').max)
--> 176 fit(X, y, sample_weight, solver_type, kernel, random_seed=seed)
177 # see comment on the other call to np.iinfo in this file
178
C:UsersnnayyarAnacondalibsite-packagessklearnsvmbase.pyc in _dense_fit(self, X, y, sample_weight, solver_type, kernel, random_seed)
229 cache_size=self.cache_size, coef0=self.coef0,
230 gamma=self._gamma, epsilon=self.epsilon,
--> 231 max_iter=self.max_iter, random_seed=random_seed)
232
233 self._warn_from_fit_status()
C:UsersnnayyarAnacondalibsite-packagessklearnsvmlibsvm.pyd in sklearn.svm.libsvm.fit (sklearnsvmlibsvm.c:1864)()
ValueError: Buffer has wrong number of dimensions (expected 1, got 2)
从研究中,我发现使用SVM最常见的答案是形状必须"匹配",但我如何将SVM与各种大小的数据拟合?
编辑:仍然需要一些帮助,我如何预测成千上万的预测,而不仅仅是下一个1?
问题出在fit
调用中的第二个参数上。
正如根据文档所述,第二个参数需要是n个样本的数组,其中n是实例数,等于作为第一个参数(X)传递的矩阵的行数。
拟合(X,y,sample_weight=无)
X:{类阵列,稀疏矩阵},形状(n_samples,n_features)
y:阵列状,形状(n_samples)
因此,如果第一个参数的大小为40.000 x 119
(因为您对其进行了转置),那么第二个参数需要是大小为40.000 x 1
的数组。
但是,根据错误判断,您的第二个参数可能有超过1列(即2列)。