Supreeth Meka
Supreeth Meka

Reputation: 1889

Multiple return statements issue in python

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?

Upvotes: 2

Views: 363

Answers (1)

wim
wim

Reputation: 362786

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))

Upvotes: 3

Related Questions