首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CatBoost和UnicodeEncodeError

CatBoost和UnicodeEncodeError
EN

Stack Overflow用户
提问于 2018-09-10 10:39:14
回答 1查看 195关注 0票数 0

我试图在Pandas中使用Python2.7和CatBoostRegressor,但我得到了

UnicodeEncodeError:'ascii‘编解码器不能在0-4位置编码字符:序数不在范围内(128个)

我使用unicode三明治并将csv读入:df = pd.read_csv ('out.csv', index_col = 0, encoding = 'utf8')。读取数据后,我执行一次检查:

代码语言:javascript
复制
print df.apply(lambda x: pd.lib.infer_dtype(x.values))

node        integer
name        unicode
region      unicode
price      floating
hour        integer
year        integer
month       integer
day         integer
dtype: object

显然,Catboost试图进行编码,但没有成功。如何才能避免这种情况?

简化代码:

代码语言:javascript
复制
import pandas as pd
from catboost import CatBoostRegressor


lst2 = [100001,100002,100003,100004,100005]
lst3 = [u'Хлеб',u'Молоко',u'Чай',u'Кофеёк',u'Пончики']
lst4 = [100.0,200.1,100.0,3.5,200.0]
lst5 = [876.0,185.1023,101.12698,301.5023,200.0]
lst6 = [1,1,1,1,1]

df = pd.DataFrame({u'node' : lst2, u'name':lst3, u'vol':lst4, u'price':lst5, u'hour':lst6},
                  columns=[u'node', u'name', u'vol', u'price', u'hour'])

train_data = df.iloc[:-2, :]
train_labels = train_data[u'price'].values
train_data = train_data.drop([u'price'], axis = 1)


cat_features = [1]
clf = CatBoostRegressor(iterations=100, learning_rate=0.1, depth=4)
clf.fit(train_data, train_labels, cat_features)
EN

回答 1

Stack Overflow用户

发布于 2018-09-29 16:22:18

这似乎是cython的一个问题。在您的情况下,有什么可以帮助您用bytes替换bytes,如:lst3 = [b'Хлеб',...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52255985

复制
相关文章

相似问题

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