【解决方法】——TypeError: object of type 'int' has no len()

最近跑程序时总是遇到一些奇怪的报错,经常是昨天跑通了今天又不行了。

这次的错误:

  File "E:/PyProject/main.py", line 99, in <module>
    predict_gender()
  File "E:/PyProject/main.py", line 80, in predict_gender
    model_gender.fit_transform(result_gender)
  File "E:\PyProject\model.py", line 368, in fit_transform
    index = StratifiedShuffleSplit(n, test_size=0.2, random_state=233)
  File "F:\Anaconda3\install\lib\site-packages\sklearn\cross_validation.py", line 1060, in __init__
    len(y), n_iter, test_size, train_size, random_state)
TypeError: object of type 'int' has no len()

报错代码:

index = StratifiedShuffleSplit(8, test_size=0.2, random_state=233)
for tra, val in index.split(self.X,self.y):

实际上这块代码属于from sklearn.model_selection import StratifiedShuffleSplit的写法,是python3.7更新的sklearn包,但是由于使用的代码是之前写的,跑的时候用的python3.6的环境,所以会报错。

不建议按照他的提示改,那样就没完没了了。
简单的改法,将环境换到python3.6,调用包改成from sklearn.cross_validation import StratifiedShuffleSplit,代码也进行修改:

for tra, val in StratifiedShuffleSplit(self.y, n, test_size=0.2, random_state=233)

这样就通了。
这个就是python3.7和3.6的不同写法了,大家可以根据实际看看是不是语法和配置环境是不是不匹配造成的问题。

你可能感兴趣的:(解决方法,python,报错,解决方案)