ValueError:无效文字为float():2017-03-18 19:22:51-07:00

我是Python编程的新手。当我尝试为主要组件分析标准化数据时,出现以下错误消息。ValueError:无效文字为float():2017-03-18 19:22:51-07:00

Python版本:2.7.4。

df = pd.read_csv('E:/Downloads/Datasets/PCA_data.csv') 

df.head()

number_people date timestamp day_of_week \

0 37 2015-08-14 17:00:11-07:00 61211 4

1 45 2015-08-14 17:20:14-07:00 62414 4

2 40 2015-08-14 17:30:15-07:00 63015 4

3 44 2015-08-14 17:40:16-07:00 63616 4

4 45 2015-08-14 17:50:17-07:00 64217 4

is_weekend is_holiday temperature is_start_of_semester \

0 0 0 71.76 0

1 0 0 71.76 0

2 0 0 71.76 0

3 0 0 71.76 0

4 0 0 71.76 0

is_during_semester month hour

0 0 8 17

1 0 8 17

2 0 8 17

3 0 8 17

4 0 8 17

x = df.iloc[:,1:8] # all rows, all the features and no labels

y = df.iloc[:, 0] # all rows, label only

# Scale the data to be between -1 and 1

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()

X = scaler.fit_transform(x)

X

X = scaler.fit_transform(x)

Traceback (most recent call last):

File "<ipython-input-28-ce4e52c57a0a>", line 1, in <module>

X = scaler.fit_transform(x)

File "C:\Users\owner\Anaconda2\lib\site-packages\sklearn\base.py", line 494, in fit_transform

return self.fit(X, **fit_params).transform(X)

File "C:\Users\owner\Anaconda2\lib\site-packages\sklearn\preprocessing\data.py", line 560, in fit

return self.partial_fit(X, y)

File "C:\Users\owner\Anaconda2\lib\site-packages\sklearn\preprocessing\data.py", line 583, in partial_fit

estimator=self, dtype=FLOAT_DTYPES)

File "C:\Users\owner\Anaconda2\lib\site-packages\sklearn\utils\validation.py", line 382, in check_array

array = np.array(array, dtype=dtype, order=order, copy=copy)

ValueError: invalid literal for float(): 2017-03-18 19:22:51-07:00

请有人看看它..很多预先感谢。

回答:

date列是一个字符串,没有数值,因此您不应该对其进行缩放。此外,您也不应该考虑timestamp列,因为它是一个不断增加的值,您不会从PCA获得任何有意义的信息。

因此我建议你做:

x = df.iloc[:,3:8] # all rows, except label, date and timestamp 

回答:

StandardScaler只能FIT /由调用check_array与StandardScaler.partial_fitdtype=FLOAT_DTYPES注意变换浮点类型。

如果您打算将其包含在分析中,则需要排除日期列或将其转换为浮点格式(unix timestamp)。尽管我会建议不要将时间作为一项功能。

NB您也有timestamp列,虽然能够通过StandardScaler转换也应该从您的数据中排除。

以上是 ValueError:无效文字为float():2017-03-18 19:22:51-07:00 的全部内容, 来源链接: utcz.com/qa/266898.html

回到顶部