Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 列表中的数组_Python_Pandas_Scikit Learn_Sklearn Pandas - Fatal编程技术网

Python 列表中的数组

Python 列表中的数组,python,pandas,scikit-learn,sklearn-pandas,Python,Pandas,Scikit Learn,Sklearn Pandas,试图解决这个问题我真的很困惑。我试图使用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

试图解决这个问题我真的很困惑。我试图使用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)
“序列”是一个差分时间序列,我试图用
MinMaxScaler
在[0,1]和之前在熊猫中差分的时间序列之间重新缩放

运行代码时出现以下错误:
ValueError:设置带有序列的数组元素。

我不明白的是,如果一列中只有一个
功能或变量,代码运行正常,但在这种情况下我有两个
功能,每个功能位于不同的列中。

回溯:

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\u值

[[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.])]]
完整的代码不是我的,它是从

编辑:

这是我的数据集

只需将名称“洗发水销售.csv”切换为“datos2.csv”,这句话:

return datetime.strptime('190'+x, '%Y-%m') 
对于这一点:

return datetime.strptime(''+x, '%Y-%m-%d')

在链接到的教程中,对象
系列
实际上是一个
系列
。它是一个信息向量,有一个命名索引。但是,数据集除了时间序列索引之外,还包含两个信息字段,这使它成为一个
DataFrame
。这就是教程代码与您的数据中断的原因

以下是您的数据样本:

import pandas as pd

def parser(x):
    return datetime.strptime(''+x, '%Y-%m-%d')

df = pd.read_csv("datos2.csv", header=None, parse_dates=[0], 
                 index_col=0, squeeze=True, date_parser=parser)
df.head()
               1     2
0                     
2012-01-01  10.9  3736
2012-01-02  10.3  3570
2012-01-03   9.0  3689
2012-01-04   9.5  3680
2012-01-05  10.3  3697
以及教程中的等效部分:
“运行此示例会将数据集作为一个系列加载,并打印前5行。”

要验证这一点,请选择一个字段并将其存储为
series
,然后尝试运行
MinMaxScaler
。您将看到它运行时没有错误:

series = df[1]
# ... compute difference and do scaling ...
print(scaled_values)
[[ 0.58653846]
 [ 0.55288462]
 [ 0.63942308]
 ..., 
 [ 0.75      ]
 [ 0.6875    ]
 [ 0.51923077]]
注意:与教程数据相比,数据集中的另一个细微差别是数据中没有标题。设置
header=None
以避免将第一行数据指定为列标题

更新
要将整个数据集传递到
MinMaxScaler
,只需在两列上运行
difference()
,并传入转换后的向量进行缩放
MinMaxScaler
接受n维
DataFrame
对象:

ncol = 2
diff_df = pd.concat([difference(df[i], 1) for i in range(1,ncol+1)], axis=1)
scaler = MinMaxScaler(feature_range=(0, 1))
scaled_values = scaler.fit_transform(diff_df)

你能不能把完整的回溯和/或给
系列
(这样我们就可以重现错误)的一个例子,当然,我也会把完整的代码包含在postCan中,你也可以发布你的数据(或其中的一部分),这样我们就可以重现错误。我忘了。这是数据集的链接:非常感谢。正如你所说的,我正试图用这两个变量来做预测。通过这样做,不可能考虑所有的变量。series=df[1]仅考虑第一列。可以使用所有的变量吗?我已经更新了我的答案来演示如何一次缩放多个向量。这正是我所需要的。非常感谢。
ncol = 2
diff_df = pd.concat([difference(df[i], 1) for i in range(1,ncol+1)], axis=1)
scaler = MinMaxScaler(feature_range=(0, 1))
scaled_values = scaler.fit_transform(diff_df)