哪个选项不是python浮点数类型_Python3类型错误:'数字浮点数64'对象不是iterab

我想用KNN绘制一个图,显示错误分类错误与dek邻居。在

这就是我为之构建的代码:# creating odd list of K for KNN

myList = list(range(1,50))

# subsetting just the odd ones

neighbors = filter(lambda x: x % 2 != 0, myList)

# empty list that will hold cv scores

cv_scores = []

# perform 10-fold cross validation

for k in neighbors:

knn = KNN(n_neighbors=k, n_jobs = 6, metric = 'minkowski', contamination = 0.05)

scores = cross_val_score(knn, X_test, pred, cv=10, scoring='accuracy')

cv_scores.append(scores.mean())

### Create Plot

import matplotlib.pyplot as plt

plt.style.use('ggplot')

# changing to misclassification error

MSE = [1 - x for x in cv_scores]

# determining best k

optimal_k = neighbors[MSE.index(min(next(iter(MSE))))]

print ("The optimal K neighbors number is %d" % optimal_k)

# plot misclassification error vs k

plt.plot(neighbors, MSE, figsize = (20,12))

plt.xlabel('Number of Neighbors K')

plt.ylabel('Misclassification Error')

plt.show()

问题出在这条线上:

^{pr2}$

这段代码似乎是用python2编写的。这是最初的台词:optimal_k = neighbors[MSE.index(min(MSE))]

我添加了next()和{}来解决这个问题,正如其他类似线程中的一些用户所建议的那样。但我得到了一个错误:TypeError: 'numpy.float64' object is not iterable

我知道为什么会发生这个错误,它应该是通过一个列表来输入,但是它只接受数字。我认为问题来自filter()在这一行的使用:neighbors = filter(lambda x: x % 2 != 0, myList)

我如何修复这些代码以在Python3上运行并防止这种情况发生??在

提前谢谢

编辑:

我使用的KNN版本不是sklearn中的版本,对于那些想尝试此代码的人来说。它来自一个叫做PYOD的异常检测包。链接here

您也可以尝试使用sklearn的原始KNN,但请注意,您需要删除污染参数,可能还有距离参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值