如何解决这个 NameError: name 'clf' is not defined?

#Feature Selection --> Random Forest

def feature_importance(clf):

    # Relative Importance (Features)

    clf.fit(X_train,y_train)

    # Get Feature Importance from the classifier

    feature_importance = clf.feature_importances_

    # Normalize The Features

    feature_importance = 100.0 * (feature_importance / feature_importance.max())

    # Sort Features and Creat Horizontal Bar Plot

    sorted_idx = np.argsort(feature_importance)

    pos = np.arange(sorted_idx.shape[0]) + .5

    pl.figure(figsize=(16, 12))

    pl.barh(pos, feature_importance[sorted_idx], align='center', color='#0033CC')

    pl.yticks(pos, np.asanyarray(df.columns.tolist())[sorted_idx])

    pl.xlabel("Relative Importance")

    pl.title("Variable Importance - Random Forest")

    pl.show()



clf_NB = GaussianNB()

clf_SVC = SVC()

clf_RF = RandomForestClassifier(n_estimators = 100)


algorithms = [clf_NB,clf_SVC,clf_RF]


for model in algorithms:

    print("\n")

    print("==============================")

    print("Model: {}".format(model.__class__.__name__))

    print("==============================")

    print("\n")

    print("**********************************************************")

    print("**Training**")

    print("Data Size:",len(X_train))

    # Fit model to training data

    train_classifier(model, X_train, y_train)


    # Predict on training set and compute F1 score

    predict_labels(model, X_train, y_train)


    #Predict on Testing Data

    print("**********************************************************")

    print("**Testing**")

    print("Data Size:",len(X_test))

    predict_labels(model, X_test, y_test)


    if clf == clf_RF:

        print("\n")

        feature_importance(clf_RF)

我相信 'clf' 是在上面的代码中声明的。但我不明白为什么我仍然收到此错误:


NameError                                 Traceback (most recent call last)

<ipython-input-30-bcd9b039b6a5> in <module>

     26     predict_labels(model, X_test, y_test)

     27 

---> 28     if clf == clf_RF:

     29         print("\n")

     30         feature_importance(clf_RF)


NameError: name 'clf' is not defined


富国沪深
浏览 1892回答 2
2回答

梵蒂冈之花

clf仅在feature_importance方法范围内定义。的值clf不会存储在此方法之外的任何地方,因此一旦您离开该方法,就好像clf从未存在过一样。看起来好像你想检查model你当前迭代的值是否为clf_RF,通过你的循环。如果您将 if 语句更改为 check for&nbsp;model == clf_RF,则代码应按预期工作。

回首忆惘然

看起来 clf 是在函数 feature_importance 的参数中声明的,但是您使用它的地方超出了范围。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python