问题解决:ValueError: Invalid classes inferred from unique values of `y`.
·
def model_xgb():
data_addr = r'E:/jzck_data\xxk\xxk/样本数据_fill_null.csv'
data = pd.read_csv(data_addr)
xx = data.copy()
xx.drop(['flag'], axis=1, inplace=True) # 取训练属性
yy = data['flag'] # 取结果标签
x_train1, x_test1, y_train1, y_test1 = train_test_split(xx, yy, test_size=0.3, random_state=100)
# le = LabelEncoder() #
# y_train1 = le.fit_transform(y_train1)
model_xgb_can(x_train1, x_test1, y_train1, y_test1)
def model_xgb_can(x_train1, y_train1, x_test1, y_test1):
xgbmodel1 = xgb.XGBClassifier()
xgbmodel1.fit(x_train1, y_train1)
ypred2 = xgbmodel1.predict(x_test1)
precision_2 = precision_score(y_test1, ypred2, average='macro')
recall_2 = recall_score(y_test1, ypred2, average='macro')
f1_2 = f1_score(y_test1, ypred2, average='macro')
cc = pd.DataFrame(confusion_matrix(y_test1, ypred2))
# In[32]:
print("precision_2=%.*f" % (3, precision_2), "recall_2=%.*f" % (3, recall_2), "f1_2=%.*f" % (3, f1_2))
return precision_2, recall_2, f1_2
在使用模型xgb.XGBClassifier()模型训练模型时,出现此问题。
问题原因:y是标签(预测结果)值,实际上我们传入模型中的y值并不是标签值(只有一个结果,且维度与x相同。)
问题解决:在model_xgb函数中调用model_xgb_can函数时传入的参数不对,将model_xgb_can(x_train1, x_test1, y_train1, y_test1)改为model_xgb_can(x_train1, y_train1,x_test1 , y_test1)。问题解决
更多推荐


所有评论(0)