如何将日期时间与整数特征混合使用Scikit-learn?

我有一个看起来像这样的pandas DataFrame:

                      pta                 ptd              dep_at4     2020-01-08 05:17:00                 NaT                 NaT6     2020-01-08 05:29:00 2020-01-08 05:30:00                 NaT9     2020-01-08 05:42:00 2020-01-08 05:44:00 2020-01-08 05:44:0011    2020-01-08 05:53:00 2020-01-08 05:54:00 2020-01-08 05:55:0012    2020-01-08 06:03:00 2020-01-08 06:05:00 2020-01-08 06:04:00

以及数据类型:

pta       datetime64[ns]ptd       datetime64[ns]dep_at    datetime64[ns]dtype: object

我使用这些数据来预测另一列arr_at,它也是datetime64[ns]类型。运行以下代码一切正常:

X = df[['pta','ptd','dep_at']]y = df.arr_atX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3) # 70% 用于训练,30% 用于测试knn = KNeighborsClassifier(n_neighbors=5)knn.fit(X_train, y_train)y_pred = knn.predict(X_test)print("准确率:",metrics.accuracy_score(y_test, y_pred))

我试图添加另一个特征列,因此我的输入现在看起来像这样:

                   pta                 ptd              dep_at  tpl_num4  2020-01-08 05:17:00                 NaT                 NaT        06  2020-01-08 05:29:00 2020-01-08 05:30:00                 NaT        19  2020-01-08 05:42:00 2020-01-08 05:44:00 2020-01-08 05:44:00        211 2020-01-08 05:53:00 2020-01-08 05:54:00 2020-01-08 05:55:00        312 2020-01-08 06:03:00 2020-01-08 06:05:00 2020-01-08 06:04:00        4

(以及数据类型):

pta        datetime64[ns]ptd        datetime64[ns]dep_at     datetime64[ns]tpl_num             int64dtype: object

但是现在,当我运行与之前相同的KNN代码,仅更改

X = df[['pta','ptd','dep_at']]

X = df[['pta','ptd','dep_at','tpl_num']]

我得到以下错误:

TypeError: float()参数必须是字符串或数字,而不能是'Timestamp'

我无法弄清楚哪里出了问题。需要注意的是,我通过以下方式将列添加到特征数据中,尽管我相当确定这不会影响任何事情:

# 将csv中的站点名称映射为整数,使用字典推导式tpl_class = {k: v for v, k in enumerate(df.tpl.unique())}# 应用到数据df['tpl_num'] = [tpl_class[i] for i in df.tpl]

回答:

我认为这是因为你现在在knn中混合了不同类型的数据。

一个解决方法是将你的datetime[ns]转换为整数(例如,对于一列):

df['pta'] = pd.to_datetime(df['pta']).astype(np.int64)

在你选择X之前对所有日期时间列进行这样的转换,然后它应该能正常工作。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注