【问题标题】:Gradient Boosted machine in pythonpython中的梯度提升机器
【发布时间】:2019-12-04 13:06:49
【问题描述】:

我正在尝试在我的模型报告中使用 python 中的梯度提升机(gbm)

我编写了一些代码来执行该任务,但收到一条错误消息

x_train,x_test,y_train,y_test=train_test_split(ml_Telco.drop(labels=['Churn'],axis=1),
                                               ml_Telco['Churn'],
                                               test_size=0.3,
                                               random_state=0)
target = 'Churn'
x_train.shape,x_test.shape

def modelfit(alg, dtrain, predictors, performCV=True,printFeatureImportance=True, cv_folds=5):
    #Fit the algorithm on the data
    alg.fit(dtrain[predictors], dtrain['Churn'])    
    #Predict training set:
    dtrain_predictions = alg.predict(dtrain[predictors])
    dtrain_predprob = alg.predict_proba(dtrain[predictors])[:,1]
    #Perform cross-validation:
    if performCV:
        cv_score = cross_validation.cross_val_score(alg,dtrain[predictors],dtrain['Churn'], cv=cv_folds, scoring='roc_auc')

    #Print model report:
    print ("\nModel Report")
    print ("Accuracy : %.4g" % metrics.accuracy_score(dtrain['Churn'].values,dtrain_predictions))

    print( "AUC Score (Train): %f" % metrics.roc_auc_score(dtrain['Churn'],dtrain_predprob))   
    if performCV:
        print( "CV Score : Mean - %.7g | Std - %.7g | Min - %.7g | Max %.7g" % (np.mean(cv_score),np.std(cv_score),np.min(cv_score),np.max(cv_score)))        
    #Print Feature Importance:
    if printFeatureImportance:
        feat_imp = pd.Series(alg.feature_importances_,predictors).sort_values(ascending=False)
        feat_imp.plot(kind='bar', title='Feature Importances')
        plt.ylabel('Feature Importance Score')

predictors = [x for x in x_train.columns if x not in ['Churn']]
gbm0 = GradientBoostingClassifier(random_state=10)
modelfit(gbm0, x_train, predictors)

我希望得到一份模型报告,其中显示: 准确性 Auc分数(火车) 简历分数

但我收到以下错误:

KeyError                                  Traceback (most recent call last)

<ipython-input-154-2ee19dd7c558> in <module>

      1 predictors = [x for x in x_train.columns if x not in ['Churn']]

      2 gbm0 = GradientBoostingClassifier(random_state=10)

----> 3 modelfit(gbm0, x_train, predictors)

KeyError: 'Churn'

谢谢

【问题讨论】:

    标签: python search grid roc gbm


    【解决方案1】:

    您的函数 modelfit 需要一个数据框 dtrain,它应该包含所有列,包括您的 y 变量列“流失”。所以首先连接x_trainy_train,然后将生成的数据帧传递给modelfit函数

    df=pd.concat([x_train, y_train], axis=1)
    gbm0 = GradientBoostingClassifier(random_state=10)
    modelfit(gbm0, df, x_train.columns)
    

    在您的 model fit 函数中,您正在拟合模型并预测相同的数据集,即您的训练集 (x_train,ytrain)。理想情况下,您应该将模型拟合到您的训练集并在您的测试集 (x_test,y_test) 上进行预测。

    【讨论】:

      猜你喜欢
      • 2018-02-21
      • 2017-03-01
      • 2020-04-10
      • 2015-07-12
      • 2021-06-16
      • 2020-09-25
      • 2019-08-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多