debug:TypeError: Feature names are only supported if all input features have string names, but your

一个bug卡了我好几天,写个文档记录一下处理过程,我个人思考的也不是很清楚,仅用做记录,希望日后能更深入的解决

问题产生:

训练随机森林等算法

df.head()

打印结果

track_idtrack_namepopularityduration_msexplicitartistsartists_idrelease_datedanceabilityenergy...r&bmandopopjapaneseraphongindiekonghousesingersongwriter
05KpWHEh32vzxkttIK3KHKI國際孤獨等級51193747False['Gareth.T']6R57JlNKlnNrYaji0vw8xx2023-03-030.6920.189...0000101000
11sb71AvysPMJlsx4qYtTpG緊急聯絡人58222668False['Gareth.T']6R57JlNKlnNrYaji0vw8xx2023-11-300.5130.373...0000101000
22mMgDVazhRjNoOweYMP1pz青春告別式50256967False['Hins Cheung']2MVfNjocvNrE03cQuxpsWK2023-12-310.4330.380...0000000000
36UuJk5rvrxSnOAwv6uSr5b給你幸福 所以幸福51244693False['Jay Fung']4EXI1ieJe2VDbvNsKOaNQL2023-10-240.4140.456...0000000000
41mUhvuqX0ScGodDTdnRtuL永久損毀49232002False['MC 張天賦', 'Panther Chan']5tRk0bqMQubKAVowp35XtC2023-12-190.5140.405...0000000000

5 rows × 45 columns

以上是数据内容

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.4, random_state=0)
print(x_train.columns.tolist())
print(x_train.columns.dtype)
#TODO
x_train= x_train.rename(str,axis="columns") 

# 决策树模型
dt_model = DecisionTreeRegressor(random_state=0)
dt_model.fit(x_train, y_train)
y_pred_dt = dt_model.predict(x_test)

在dt_model.fit(x_train, y_train)报错,

TypeError: Feature names are only supported if all input features have stringAsk Qnames, but your input has ['str', 'str_'] as column name types

解决思路一

对数据类型进行转换,

x.columns = x.columns.astype(str)
print(x.columns.dtype)
print(x.columns.tolist())
for col_name in x.columns:
    assert isinstance(col_name, str)

其实这里核心的是x.columns = x.columns.astype(str),一句就够了

但是经过上述代码,column的类型已经变成object,即字符串型,但是在上面的dt_model.fit(x_train, y_train)仍然报错相同,这里的失败原因尚不可知

解决思路二

x_train= x_train.rename(str,axis="columns") 

换了一种解决方法在StackOverflow中查到的,没想到一下子就好了,原理和方法一类似,我还没找到为什么这个可以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值