KeyError: “None of [Int64Index([112, 113,..121,\n .\n 58, 559],\n dtype=’int64′, length=448)] are in the [columns]”

我使用了极限学习机(ELM)模型进行预测,并使用K折交叉验证来验证模型的预测效果。但是执行以下代码后,我得到了这个错误信息:

KeyError: "None of [Int64Index([112, 113, 114, 115, 116, 117, 118, 119, 120, 121,\n            ...\n            550, 551, 552, 553, 554, 555, 556, 557, 558, 559],\n           dtype='int64', length=448)] are in the [columns]"

我该如何解决这个问题?问题出在哪里?代码如下:

 dataset = pd.read_excel("un.xls")        X=dataset.iloc[:,:-1]    y=dataset.iloc[:,-1:]            #----------Scaler----------    scaler = MinMaxScaler()    scaler_X = MinMaxScaler()    X=scaler.fit_transform(X)        #---------------------- Divided the datset----------------------        X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=2)        # Splits dataset into k consecutive folds (without shuffling by default).        kfolds = KFold(n_splits=5, random_state=16, shuffle=False)       for train_index, test_index in kfolds.split(X_train, y_train):       X_train_folds, X_test_folds = X_train[train_index], X_train[test_index]       y_train_folds, y_test_folds = y_train[train_index], y_train[test_index]              # put all code in the for loop so that for every set of (X_train_folds, y_train_folds), the model is fitted.       # call predict() for corresponding set of X_test_folds       # put all code in the for loop so that for every set of (X_train_folds, y_train_folds), the model is fitted.       # call predict() for corresponding set of X_test_folds        #----------------------------(input size)-------------    input_size = X_train.shape[1]    hidden_size = 23#---------------------------(To fix the RESULT)-------seed =22   # can be any number, and the exact value does not matternp.random.seed(seed)#---------------------------(weights & biases)------------input_weights = np.random.normal(size=[input_size,hidden_size])biases = np.random.normal(size=[hidden_size])#----------------------(Activation Function)----------def relu(x):   return np.maximum(x, 0, x)#--------------------------(Calculations)----------def hidden_nodes(X):    G = np.dot(X, input_weights)    G = G + biases    H = relu(G)    return H#Output weights output_weights = np.dot(pinv2(hidden_nodes(X_train)), y_train)#------------------------(Def prediction)---------def predict(X):    out = hidden_nodes(X)    out = np.dot(out, output_weights)    return out#------------------------------------(Make_PREDICTION)--------------prediction = predict(X_test_folds)    

错误信息如下:

raise KeyError(f”None of [{key}] are in the [{axis_name}]”)

KeyError: “None of [Int64Index([112, 113, 114, 115, 116, 117, 118, 119, 120, 121,\n …\n 550, 551, 552, 553, 554, 555, 556, 557, 558, 559],\n dtype=’int64′, length=448)] are in the [columns]”


回答:

你应该只使用train_test_split()KFold()来分割数据。不要同时使用两者

正如KFold()文档所述:

你应该在KFold.split()中仅使用X。所以使用以下代码:

kfolds = KFold(n_splits=5, random_state=16, shuffle=False)   for train_index, test_index in kfolds.split(X):   X_train_folds, X_test_folds = X[train_index], X[test_index]   y_train_folds, y_test_folds = y[train_index], y[test_index]

此外,删除所有X_trainy_train,因为它们不是必需的。

input_size = X.shape[1]def relu(x):   return np.maximum(x, 0)output_weights = np.dot(pinv2(hidden_nodes(X_train_folds)), y_train_folds)

如果代码仍然因KFold()而导致错误,你应该考虑使用train_test_split(),并用train_test_split()的变量替换KFold()的训练和测试变量

对于train_test_split()

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=2)input_size = X_train.shape[1]def relu(x):   return np.maximum(x, 0)output_weights = np.dot(pinv2(hidden_nodes(X_train)), y_train)prediction = predict(X_test)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注