GausianNB:无法将字符串转换为浮点数:'Thu Apr 16 23:58:58 2015'

数据挖掘 机器学习 Python 高斯
2022-03-10 17:04:37

我是python的初学者,所以请和我一起裸露。我正在尝试使用 GaussianNB 解决一个机器学习问题。我的某些字段的日期格式不正确,因此我将其转换为 UNIX 格式。例如,列state_changed_at在 csv 中的值为1449619185. 我正在将其转换为正确的日期格式。

现在的问题是,当我选择这些日期特征来训练我的模型时,它给了我一个错误:

无法将字符串转换为浮点数:'Thu Apr 16 23:58:58 2015'

import pandas as pd
import numpy as np
from sklearn import metrics
from sklearn.naive_bayes import BernoulliNB
from sklearn.naive_bayes import MultinomialNB
import time
from sklearn.naive_bayes import GaussianNB

train = pd.read_csv("datasets/train2.csv")
test = pd.read_csv("datasets/test.csv")
train.head()

import time

#   state_changed_at,deadline,created_at,launched_at are date time fields
# and I'm converting it into unix format
unix_cols = ['deadline','state_changed_at','launched_at','created_at']

for x in unix_cols:
    train[x] = train[x].apply(lambda k: time.ctime(k))
    test[x] = test[x].apply(lambda k: time.ctime(k))


#   state_changed_at,deadline,created_at,launched_at are date time fields.
cols_to_use = ['keywords_len' ,'keywords_count','state_changed_at','deadline','created_at','launched_at']

target = train['final_status']

# data for modeling
k_train = train[cols_to_use]
k_test = test[cols_to_use]


gnb = GaussianNB()

model = MultinomialNB()
model.fit(k_train, target)  # this lines gives me error saying: could not convert string to float: 'Thu Apr 16 23:58:58 2015'

expected = target
predicted = model.predict(k_test)
print(model.score(k_test, predicted, sample_weight=None))

任何帮助将非常感激。谢谢

1个回答

要将数据框的该列转换为 float 类型,请尝试:

k_train = train['cols_to_use'].astype(float)
target = train['final_status'].astype(float)

可以在此处找到更多文档,或者您可以在加载 csv 文件时强制转换它们,sep=','假设您的数据在 CSV 文件中由 , 分隔

train = pd.read_csv("datasets/train2.csv", 
                    dtype={'cols_to_use': float , 'final_status': float})

datetime请注意,使用库示例将 unix TimeStamp 转换为可读日期非常简单:

import datetime 

datetime.datetime.fromtimestamp(1526972723).strftime('%Y-%m-%d %H:%M:%S')

我希望它会有所帮助。