python - 输入适用于 sklearn.linear 和 sklearn.ensemble 中的某些 sklearn 模型,但不适用于其他模型

标签 python machine-learning scikit-learn regression

_train_weather.values :  [[ 0.61818182  0.81645199  0.6679803  ...,  0.          0.          1.        ]
 [ 0.61664841  0.80064403  0.65073892 ...,  0.          0.          0.        ]
 [ 0.58291347  0.80679157  0.62783251 ...,  0.          0.          0.        ]
 ..., 
 [ 0.65914567  0.52019906  0.59975369 ...,  1.          0.          0.        ]
 [ 0.56232202  0.37558548  0.47980296 ...,  0.          1.          0.        ]
 [ 0.51829135  0.35626464  0.42832512 ...,  0.          0.          1.              ]]


_train_traffic['walkin_in'].values :  [[ 0.  0.  0. ...,  0.  0.  0.]
[ 0.  0.  0. ...,  0.  0.  0.]
[ 0.  0.  0. ...,  0.  0.  0.]
..., 
[ 0.  0.  0. ...,  0.  0.  0.]
[ 0.  0.  0. ...,  0.  0.  0.]
[ 0.  0.  0. ...,  0.  0.  0.]]


_test_weather.values :  [[ 0.3388828   0.50497658  0.341133   ...,  0.          0.          0.        ]
[ 0.27426068  0.4809719   0.30591133 ...,  0.          0.          0.        ]
[ 0.28368018  0.42681499  0.26600985 ...,  0.          0.          0.        ]
..., 
[ 0.732092    0.71516393  0.69482759 ...,  1.          0.          0.        ]
[ 0.74348302  0.70257611  0.6817734  ...,  0.          1.          0.        ]
[ 0.75465498  0.69642857  0.70862069 ...,  0.          0.          1.        ]]

我有如上所述的值数组。我正在使用 _train_weather.values (X) 和 _train_traffic['walkin_in'].values (Y) 进行训练。我正在预测 _test_weather.values。

数据框如上所示。

我可以使用这些输入来使用 sklearn 中的某些模型进行预测,例如 MLP、RANSAC、Lasso、Ridge、LassoLars、RandomForestRegressor 等,但有些模型不起作用。

这是不起作用的列表:

SGD回归器 Adaboost回归器 装袋回归器 拉尔斯 梯度提升回归器 ARD回归 贝叶斯岭 Huber回归器

ElasticNet 也可以工作,但 ElasticNetCV 不行,这也适用于 Lasso,而 LassoCV 则不起作用。

他们提供以下错误:

Traceback (most recent call last):
File "run_seq_predictor.py", line 519, in <module>
run(args.conf, train, test_model, test_MLP_reg, offset, verbose, weeks,   daily, write_to_isio, filter_abnormal, threshold)
File "run_seq_predictor.py", line 420, in run
clf.fit(_train_weather.values, _train_traffic['walkin_in'].values)
File "/usr/local/lib/python2.7/site-packages/sklearn/ensemble/bagging.py", line 248, in fit
return self._fit(X, y, self.max_samples, sample_weight=sample_weight)
File "/usr/local/lib/python2.7/site-packages/sklearn/ensemble/bagging.py", line 284, in _fit
X, y = check_X_y(X, y, ['csr', 'csc'])
File "/usr/local/lib/python2.7/site-packages/sklearn/utils/validation.py", line 526, in check_X_y
y = column_or_1d(y, warn=True)
File "/usr/local/lib/python2.7/site-packages/sklearn/utils/validation.py", line 562, in column_or_1d
raise ValueError("bad input shape {0}".format(shape))
ValueError: bad input shape (253, 56)

有人可以解释一下为什么只有某些型号会出现上述错误,而其他型号则完全正常?

最佳答案

您的因变量是多元的,并非所有模型都能够对这些进行建模。如果您阅读 RANSAC、Lasso、Ridge、LassoLars、RandomForestRegressor 等的文档,那么您会在 fit 函数下看到类似这样的内容

y : array-like, shape = [n_samples] or [n_samples, n_targets]

至于您列出的其他内容,例如GradientBoostingRegressor

y : array-like, shape = [n_samples]

这就是您收到错误的原因。如果您提供有关因变量的更多详细信息,我很乐意编辑答案。您的数据看起来可能是一次性编码的...

关于python - 输入适用于 sklearn.linear 和 sklearn.ensemble 中的某些 sklearn 模型,但不适用于其他模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43728879/

相关文章:

python - sklearn : Would like to extend CountVectorizer to fuzzy match against vocabulary

apache-spark - 有效地找到与给定向量的前 K 个余弦相似向量

python - 模块 'cv2' 没有属性 'createThinPlateSplineShapeTransformer'

python - 从 __init__.py 导入方法

python - 迭代器是否在 Python 中保留自己的数组副本?

python - 如何使用 Robot Framework 在列表中找到最低值?

Python——计算共现矩阵

machine-learning - 为什么PCA会降低Logistic回归的性能?

python - 如何按编辑距离对句子进行分组?

python - 为什么当 alpha 值中分母的幂增加到 13 或更多时,Ridge 模型拟合会显示警告?