python - K最近邻
问题描述
我收到一个错误,不太确定为什么会这样......这是我的数据看起来像这样的一点
Date/Time Lat Lon Base
0 8/1/2014 0:03:00 40.7366 -73.9906 B02512
import pandas as pd
import matplotlib.pyplot as plt
from sklearn import preprocessing
df = pd.read_csv('aug.csv')
df.head()
X = df.drop(columns =['Base'])
clus = df[['Lat','Lon']]
y = clus
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=1)
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors = 1)
knn.fit(X_train,y_train)
#Here is my error from the knn.fit(X_train,y_train)
ValueError: could not convert string to float: '8/11/2014 7:33:00'
解决方案
数据中的日期/时间列是字符串类型。KNN 分类器期望输入数据是数字的,因此
ValueError: could not convert string to float: '8/11/2014 7:33:00'
当它尝试将字符串转换为浮点数时
将日期字符串转换为数字数据类型的策略很少。
如果你的Date/Time
专栏categorical
本质上很少categories
,你可以试试one-hot-encoding
。
或者,drop
如果它没有为您的分析提供任何有意义的信息,您可以只使用该列。
或者您可以date/time
使用此将列转换为总秒数。
pd.to_timedelta(df.date).dt.total_seconds()
pd
pandas在哪里,df
是你的DataFrame
对象。
注意:此代码要求输入为特定类型。对于您的日期字符串,您应该尝试以下操作:
df['Date/Time'] = df['Date/Time'].astype('datetime64').astype(int).astype(float)
始终注意:统计建模技术适用于数值数据。您将不得不以一种或另一种方式将所有输入转换为数字类型
推荐阅读
- javascript - React(打字稿):如何在 const 创建中循环
- python - 如何在页面的内部滚动菜单中滚动?蟒蛇/硒
- c# - 通过迭代将一个类数据映射到另一个类
- python - Pip 安装 Pyarrow Visual Studio 生成器
- node.js - Angular 7.x 对节点快速服务器的查询被转换为字符对象数组
- groovy - String.each 遍历字符?
- json - Pyspark JSON 字符串解析 - 错误:ValueError:'json' 不在列表中 - 没有 Pandas
- javascript - 由 Knockout.js 选项绑定动态创建的选项元素没有 offsetTop 值
- c++11 - ZigZag 水平顺序遍历 BT
- python - Python - 如何直接从 Smartsheets 创建熊猫数据框?