python训练和测试中的错误:如何修复“ TypeError:无法散列的类型:'list'”

我正在尝试编写代码,其中,数据集分为训练和测试。火车的主要部分将分为火车验证和交叉验证。使用K-fold值,我想运行代码,以便将主训练集划分为任意数量的折叠(或组,具体取决于我们提到的折叠值),然后将(folds-1)组分配给划分后的训练集和其余的要交叉验证。例如,如果有3折,则火车将分为三组:g1,g2,g3。首先,以g1 + g2作为训练,g3为交叉验证,然后,以g2 + g3为训练,g1为交叉验证,依此类推,以求出准确度,从而得出最佳K值。

我使用的逻辑是根据折叠次数划分主火车,并在其上使用随机选择。因此,从“ split_list”功能中选择了一组,然后进行交叉验证。其余部分用于训练(主要火车交叉验证)。

随机导入 从sklearn.metrics导入precision_score

def split_list(x_train,folds):

length = len(x_train)

return  random.choices([ x_train[i*length // folds: (i+1)*length // folds] 
         for i in range(folds) ])
def Random_Search(x_train,y_train,classifier,params,folds):

trainscores = []
cvscores = []

for k in tqdm(params['n_neighbors']):

    trainscores_folds = []
    cvscores_folds = []

    for j in range(0,folds):   

        cv_indices = split_list(list(x_train),folds)
        train_indices = list(set(list(range(1,len(x_train)))) - 
                         set(cv_indices))

我遇到的错误:

TypeError                                 Traceback (most recent call last)
<ipython-input-114-808deaf8461e> in <module>

      8 params = {'n_neighbors':sorted(random.sample(range(1,50),10))}

      9 folds = 9

---> 10 trainscores,cvscores = Random_Search(X_train,neigh,folds)

     11 plt.plot(params['n_neighbors'],trainscores,label='train cruve')

     12 plt.plot(params['n_neighbors'],cvscores,label='cv cruve')

<ipython-input-113-fc0b09f4ad82> in Random_Search(x_train,folds)

     14         for j in range(0,folds):

     15             cv_indices = split_list(list(x_train),folds)

---> 16             train_indices = list(set(list(range(1,len(x_train)))) - set(cv_indices))

     17 # selecting the data points based on the train_indices and test_indices

     18             X_train = x_train[train_indices]

TypeError: unhashable type: 'list'
hz000005 回答:python训练和测试中的错误:如何修复“ TypeError:无法散列的类型:'list'”

我不知道您想在此做什么,但是也许问题出在 train_indices列表像输出一样显示一个列表,但是您有一个包含项目列表的列表,所以他不知道如何阅读该清单。他希望物品不是物品清单。

因此,您有一个主列表,其中包含一个项目列表,但他希望找到的项目不是另一个项目列表。

本文链接:https://www.f2er.com/3135477.html

大家都在问