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)。问题解决

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐