我有这个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
答案 0 :(得分:0)
虽然您说您的数据框" 都只包含数字"但您还注意到第一列包含日期时间对象。该错误告诉您preprocessing.scale
只想使用浮点值。
然而,真正的问题是你期望发生的事情。 preprocessing.scale
将均值置于均值上并对方差进行归一化。这使得测量的量全部表示在大致相同的基础上。现在,您的第一列会告诉您数据对应的日期,而其余列则是数字数据本身。你为什么要把日期标准化? 如何将日期标准化?
从语义上讲,我相信你应该单独留下你的日期。无论您计划对数值数据执行何种后处理,标准化数据仍应按原始日期进行参数化。如果您也想处理日期,则需要提出一种明确的方法来处理日期数字(例如elapsed time from a given date in given units)。
所以我相信你应该完全从你的处理轮次中删除你的日期,并从
开始X = df.drop(['Date','High'], 1).as_matrix()