我有这个TypeError
,如下所示,我检查了我的df
,它都只包含数字,这会是我转换为numpy数组时造成的吗?转换后,数组具有类似的项目
[Timestamp('1993-02-11 00:00:00') 28.1216 28.3374 ...]
有什么建议可以解决这个问题吗?
df:
Date Open High Low Close Volume
9 1993-02-11 28.1216 28.3374 28.1216 28.2197 19500
10 1993-02-12 28.1804 28.1804 28.0038 28.0038 42500
11 1993-02-16 27.9253 27.9253 27.2581 27.2974 374800
12 1993-02-17 27.2974 27.3366 27.1796 27.2777 210900
X = np.array(df.drop(['High'], 1))
X = preprocessing.scale(X)
TypeError: float() argument must be a string or a number
当您说您的数据帧">all只包含数字"时,您还注意到第一列由日期时间对象组成。错误告诉您preprocessing.scale
只想使用浮点值。
然而,真正的问题是,你期望从一开始会发生什么。preprocessing.scale
将值集中在平均值上并对方差进行归一化。因此,测量的数量都是在大致相同的基础上表示的。现在,第一列告诉数据对应的日期,而其余列本身就是数字数据。为什么要使日期正常化您将如何规范日期?
从语义上讲,我认为你应该别管约会对象。无论您计划对数字数据执行何种后处理,标准化数据仍应通过原始日期进行参数化。如果你也想处理你的日期,你需要想出一个明确的方法来将你的日期处理成数字(比如,从给定日期到给定单位的经过时间)。
所以我认为你应该完全放弃处理回合中的日期,从开始
X = df.drop(['Date','High'], 1).as_matrix()