【发布时间】:2017-10-19 22:43:22
【问题描述】:
我真的很困惑试图解决这个问题。我正在尝试使用 sklearn 函数:MinMaxScaler,但出现错误,因为似乎我正在设置一个带有序列的数组元素。
代码是:
raw_values = series.values
# transform data to be stationary
diff_series = difference(raw_values, 1);
diff_values = diff_series.values;
diff_values = diff_values.reshape(len(diff_values), 1)
# rescale values to 0,1
scaler = MinMaxScaler(feature_range=(0, 1))
scaled_values = scaler.fit_transform(diff_values); print(scaled_values)
scaled_values = scaled_values.reshape(len(scaled_values), 1)
“series”是一个不同的时间序列,我试图在 [0,1] 和 MinMaxScaler 之间重新调整,而时间序列以前在 pandas 中是不同的。
运行代码时出现以下错误:
ValueError: setting an array element with a sequence.
我不明白的是,如果一列中只有一个 feature 或变量,代码运行正常,但在这种情况下 我有 2 个features,每个都在不同的列。
追溯:
File "C:/....py", line 88, in prepare_data
scaled_values = scaler.fit_transform(diff_values); print(scaled_values)
File "C:\Users\name\AppData\Roaming\Python\Python35\site-packages\sklearn\base.py", line 494, in fit_transform
return self.fit(X, **fit_params).transform(X)
File "C:\Users\name\AppData\Roaming\Python\Python35\site-packages\sklearn\preprocessing\data.py", line 292, in fit
return self.partial_fit(X, y)
File "C:\Users\name\AppData\Roaming\Python\Python35\site-packages\sklearn\preprocessing\data.py", line 318, in partial_fit
estimator=self, dtype=FLOAT_DTYPES)
File "C:\Users\name\AppData\Roaming\Python\Python35\site-packages\sklearn\utils\validation.py", line 382, in check_array
array = np.array(array, dtype=dtype, order=order, copy=copy)
ValueError: setting an array element with a sequence.
如果我打印diff_values,这就是我得到的结果
[[array([ -1.3, 119. ])]
[array([ 0.5, -9. ])]
[array([ 0.8, 17. ])]
...,
[array([ 2.8, 742. ])]
[array([ 1.50000000e+00, -1.65900000e+03])]
[array([ -2., 856.])]]
完整代码不是我的,是从here获得的
编辑:
Here 是我的数据集
只需将名称 'shampoo-sales.csv' 切换为 'datos2.csv' 和这句话:
return datetime.strptime('190'+x, '%Y-%m')
到这个:
return datetime.strptime(''+x, '%Y-%m-%d')
【问题讨论】:
-
能否包含完整的回溯和/或为
series提供示例分配(以便我们重现错误) -
当然,我也会在帖子中包含完整的代码
-
您能否也发布您的数据(或其中的一部分),以便我们重现错误。
标签: python pandas scikit-learn sklearn-pandas