首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用tpot的分类数据

使用tpot的分类数据
EN

Stack Overflow用户
提问于 2018-04-14 01:07:19
回答 1查看 1.8K关注 0票数 4

我正在尝试将tpot与我在pandas数据帧中的输入一起使用。我一直收到错误:

TypeError:输入类型不支持ufunc 'isnan‘,根据转换规则''safe'’,无法将输入安全地强制转换为任何支持的类型

我相信这个错误是因为isnan无法处理我的数据结构,但我不确定如何以不同的方式格式化它。我有分类输入和连续输入以及连续输出的组合。下面是一个包含相似数据的代码示例:

代码语言:javascript
复制
train_x=[[1,2,3],['test1','test2','test3'],[56.2,4.5,3.4]]
train_y=[[3,6,7]]
from tpot import TPOTRegressor

tpot=TPOTRegressor()

我必须以某种方式转换分类数据吗?dataframe.values和dataframe.as_matrix给我的对象也给了我一个错误。

EN

回答 1

Stack Overflow用户

发布于 2018-04-14 02:35:17

这就对了--你需要转换你的分类值。TPOT假设所有数据都将以scikit-learn兼容的格式出现,这意味着所有数据都是数字。我们最近才添加了对缺失值的支持,尽管大多数scikit-learn算法也不接受缺失值的数据。

我修改了下面的示例,以展示如何使用pandas将分类值转换为数字值。

代码语言:javascript
复制
import pandas as pd
from tpot import TPOTRegressor

train_x = pd.DataFrame()
train_x['a'] = [1,2,3,4]
train_x['b'] = ['test1','test2','test3','test4']
train_x['c'] = [56.2,4.5,3.4,6.7]

# This line one-hot encodes the categorical variables
train_x = pd.get_dummies(train_x).values
# Print train_x out to understand what one-hot encoding entails
print(train_x)

train_y = [3,6,7,9]

my_tpot = TPOTRegressor(cv=2)
my_tpot.fit(train_x, train_y)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49822035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档