2

I wrote a function which takes training dataframe and testing data frame as inputs.

In this function I'm creating three variables train, test and target

def rem_miss_vals(trainDF, testDF):
    trainDF = trainDF[np.isfinite(trainDF)]
    testDF = testDF[np.isfinite(testDF)]
    train = trainDF.values
    train = train[0::, 1:]
    target = train[0::, 0]
    test = testDF.values
    return train, test, target

I want to use the train, test and target in the below function

def get_variable_rankings(trainingset, targetset, testset):
    logit = linear_model.LogisticRegression()
    logreg = RFE(logit, 1)
    logreg.fit(trainingset, targetset)
    logitPredictions = logreg.predict(testset)
    variablerankings =  logreg.ranking_
    variablerankings = variablerankings.tolist()
    return variablerankings

ACTUAL CODE:

when I called these functions in main() function I received the error: train is not defined

rem_miss_vals(trainDF, testDF)
get_variable_rankings(train, target, test)

In the rem_miss_vals() I'm clearly returning them but I don't understand whay am I not able to use the train, target and test in the get_variable_rankings() function

Can someone please help?

1 Answer 1

3

You'll have to assign the return values to some variables, so that they are in scope:

train, test, target = rem_miss_vals(trainDF, testDF)
variablerankings = get_variable_rankings(train, target, test)

Alternatively, splat them directly to the next function:

variablerankings = get_variable_rankings(*rem_miss_vals(trainDF, testDF))
Sign up to request clarification or add additional context in comments.

2 Comments

Is referring to unpacking as "splat" or "splatting" popular with python users?
Yeah, * is often called the splat operator.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.