in <module> lgb_predict = lgb_reg.predict(testX.drop('gameId',axis=1)) AttributeError: 'numpy.ndarray' object has no attribute 'drop'
时间: 2023-08-22 22:35:42 浏览: 125
这 error 通常是因为你正在尝试在 numpy.ndarray 对象上调用 Pandas DataFrame 方法(如 .drop())。
请检查你的代码,确保 testX 是一个 Pandas DataFrame 而不是 numpy.ndarray。如果 testX 是 numpy.ndarray,你可以使用 Pandas DataFrame 的构造函数将其转换为 DataFrame。例如:
```
import pandas as pd
testX = pd.DataFrame(testX)
```
然后你可以使用 .drop() 方法。
相关问题
[LightGBM] [Warning] Unknown parameter categorical_column= Traceback (most recent call last): File "C:\Users\86188\PycharmProjects\pythonProject8\src\lgbb.py", line 106, in <module> y_pred = lgb_model.predict(X_test) File "C:\Python37\lib\site-packages\lightgbm\sklearn.py", line 545, in predict return self._le.inverse_transform(class_index) File "C:\Python37\lib\site-packages\sklearn\preprocessing\_label.py", line 161, in inverse_transform raise ValueError("y contains previously unseen labels: %s" % str(diff)) ValueError: y contains previously unseen labels: [83394] 进程已结束,退出代码1
这个错误提示是因为你在 LightGBM 模型中使用了一个未知的参数 `categorical_column=`。这个参数在最新的 LightGBM 版本中已经被移除了。如果你想要使用分类特征,可以使用 `categorical_feature` 参数来指定它们的列索引或名称。另外,错误信息中的 `ValueError` 提示说明你的测试数据集中包含了未出现在训练数据集中的标签。你需要检查一下你的训练集和测试集的标签分布是否一致,如果不一致的话就需要进行处理。
翻译这段代码:print("start:") start = time.time() K = 9 skf = StratifiedKFold(n_splits=K,shuffle=True,random_state=2018) auc_cv = [] pred_cv = [] for k,(train_in,test_in) in enumerate(skf.split(X,y)): X_train,X_test,y_train,y_test = X[train_in],X[test_in],\ y[train_in],y[test_in] # The data structure 数据结构 lgb_train = lgb.Dataset(X_train, y_train) lgb_eval = lgb.Dataset(X_test, y_test, reference=lgb_train) # Set the parameters 设置参数 params = { 'boosting': 'gbdt', 'objective':'binary', 'verbosity': -1, 'learning_rate': 0.01, 'metric': 'auc', 'num_leaves':17 , 'min_data_in_leaf': 26, 'min_child_weight': 1.12, 'max_depth': 9, "feature_fraction": 0.91, "bagging_fraction": 0.82, "bagging_freq": 2, } print('................Start training..........................') # train gbm = lgb.train(params, lgb_train, num_boost_round=2000, valid_sets=lgb_eval, early_stopping_rounds=100, verbose_eval=100) print('................Start predict .........................') # Predict y_pred = gbm.predict(X_test,num_iteration=gbm.best_iteration) # Evaluate tmp_auc = roc_auc_score(y_test,y_pred) auc_cv.append(tmp_auc) print("valid auc:",tmp_auc) # Test pred = gbm.predict(X, num_iteration = gbm.best_iteration) pred_cv.append(pred) # the mean auc score of StratifiedKFold StratifiedKFold的平均auc分数 print('the cv information:') print(auc_cv) lgb_mean_auc = np.mean(auc_cv) print('cv mean score',lgb_mean_auc) end = time.time() lgb_practice_time=end-start print("......................run with time: {} s".format(lgb_practice_time) ) print("over:*") # turn into array 变为阵列 res = np.array(pred_cv) print("rusult:",res.shape) # mean the result 平均结果 r = res.mean(axis = 0) print('result shape:',r.shape) result = pd.DataFrame() result['company_id'] = range(1,df.shape[0]+1) result['pred_prob'] = r
打印 "start:",并记录开始时间。然后进行 K 折交叉验证,其中 K=9。对于每个交叉验证的训练集和测试集,使用 LightGBM 模型进行训练和预测,并计算每个测试集的 AUC 分数。将每个测试集的预测结果和相应的 AUC 分数存储在数组中。计算 StratifiedKFold 的平均 AUC 分数,并打印出来。将所有测试集的预测结果取平均值作为最终预测结果,并将其存储在 DataFrame 中。最后打印出总运行时间。
阅读全文