我有一个由12列组成的数据框。然后我从中剪切了一个矢量并将其分开。然后我从sklearn库执行train_test_split,如下所示:
X=pd.DataFrame()
X['annua_inc']=annual_inc
X['delinq_2yrs']=delinq_2yrs
X['dti']=dti
X['emp_length']=emp_length
X['loan_amnt']=loan_amnt
X['installment']=installment
X['int_rate']=int_rate
X['total_acc']=total_acc
X['open_acc']=open_acc
X['pub_rec']=pub_rec
X['acc_now_delinq']=acc_now_delinq
X['loan_stat']=loan_stat
X=X.fillna(0)
y=X['loan_stat']
X=X.drop(['loan_stat'], axis=1)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3,
random_state=42)
当我检查例如X_test和y_test(两者应该相同)的长度时,它返回相同的值。但是当我尝试调用X_test [len(X_test)]时,它告诉我索引超出了轴0的界限。但是对于y_test [len(y_test)],它给了我一个正确的值。有谁知道为什么?因为X_test中的最后一行和y_test中的最后一行先前在X中的同一行中合并,所以为什么现在X_test的最后一行不存在,而对于y_test它是什么呢?
答案 0 :(得分:1)
数组在索引时基于零。因此[0, 1, 2, 3]
的长度为4.但[0, 1, 2, 3][4]
将超出范围。请将最后一个元素称为[0, 1, 2, 3][4 - 1]
或[0, 1, 2, 3][-1]
在你的情况下
X_test[len(X_test) - 1]
或者
X_test[-1]