我在使用tpot之前使用pandas.get_dummies来转换我的一些分类变量。我的问题是,我有一个连续的变量,例如,即使它是一个连续的变量,它也被转换为类别。这似乎并非在所有情况下都会发生,但我无法弄清楚它何时发生。
我测试了以下内容:
pd.isnull(my_dataframe).any()
并且所有类别都表示错误
print(type(features[0,5])) # the time category with my continuous variable
,输出是
<class 'numpy.float64'>
但是当我这样做时
df_dummies=pd.get_dummies(my_dataframe)
df_dummies.columns
它为我的时间特征的每个值创建一列。
像这样:'时间(分钟)_2','时间(分钟)_3', '时间(分钟)_4','时间(分钟)_5','时间(分钟)_6','时间(分钟)_10', '时间(分钟)_15','时间(分钟)_16','时间(分钟)_20','时间(分钟)_25', '时间(分钟)_30'
任何想法在这里可能出错?
答案 0 :(得分:2)
您的时间类似乎意外地被投射到了某个地方的某个str
。
import pandas as pd
import numpy as np
from datetime import datetime
df = pd.DataFrame({'foo':np.random.choice([1, 2], 12),
'date':pd.date_range(start=datetime.now(),
periods=12, freq='1min'),
'baz': np.linspace(0, 1, 12)})
df.dtypes
df_cast = df.copy()
df_cast['date'] = df_cast['date'].astype(str)
df_cast.dtypes
<强>输出强>
foo object
date object
baz float64
dtype: object
您可以验证pd.get_dummies
与df_cast
的行为是否与您遇到的情况一致,并且正确处理floats
,ints
和{{1}在任何字段转换为datetime
之前的对象。