TypeError: list indices must be integers, not str 如何解决?
答案:3 悬赏:80 手机版
解决时间 2021-04-02 23:25
- 提问者网友:書生途
- 2021-04-02 16:16
TypeError: list indices must be integers, not str 如何解决?
最佳答案
- 五星知识达人网友:渊鱼
- 2021-04-02 17:51
st indices must be integers,not str
列表索引必须是整数,而不是STR
st indices must be integers,not str
列表索引必须是整数,而不是STR
列表索引必须是整数,而不是STR
st indices must be integers,not str
列表索引必须是整数,而不是STR
全部回答
- 1楼网友:行雁书
- 2021-04-02 19:20
没有代码,是python吗?提示信息的意思是,列表的索引不能是字符串,只能是整型可能原因是你用字符串作列表的下标追问代码给出来了,就是问题描述里的那一段,求大神指教!
- 2楼网友:煞尾
- 2021-04-02 18:03
这是机器学习实战第7章的一段程序,我也和你碰到了一样的状况,经过反复断点测试,最终解决了问题,解决方法是把函数adaBoostTrainDS()返回值中的aggClassEst删除即可!
原因如下:def adaClassify(datToClass,classifierArr):
dataMatrix = mat(datToClass)
m = shape(dataMatrix)[0]
aggClassEst = mat(zeros((m,1)))
for i in range(len(classifierArr)):
classEst = stumpClassify(dataMatrix,classifierArr[i]['dim'],
classifierArr[i]['thresh'],
classifierArr[i]['ineq'])#call stump classify
aggClassEst += classifierArr[i]['alpha']*classEst
print aggClassEst
return sign(aggClassEst) 上面这段程序的for循环之前时,观察变量classifierArr的内容:
([{'dim': 0, 'ineq': 'lt', 'thresh': 1.3, 'alpha': 0.6931471805599453}, {'dim': 1, 'ineq': 'lt', 'thresh': 1.0, 'alpha': 0.9729550745276565}, {'dim': 0, 'ineq': 'lt', 'thresh': 0.9, 'alpha': 0.8958797346140273}], matrix([[ 1.17568763],
[ 2.56198199],
[-0.77022252],
[-0.77022252],
[ 0.61607184]]))
可以发现classifierArr最顶层的维度不是弱分类器们,而是弱分类器与matrix
结合用于生成classifierArr的函数adaBoostTrainDS(dataArr,classLabels,numIt=40)的返回值,可以很快发现,此时除了返回weakClassArr之外,还返回了aggClassEst,这也就导致了classifierArr含有aggClassEst(也就是matrix),因此只需删除函数adaBoostTrainDS()返回值中的aggClassEst即可!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯