2015-05-22 3 views
2

Я написал функцию, которая берет учебный фрейм данных и тестовый фрейм данных в качестве входных данных.Проблема с несколькими возвращаемыми операторами в python

В этой функции я создаю три переменных поезда, испытание и целевой

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 

Я хочу использовать поезд, испытание и цели в следующей функции

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 

АКТУАЛЬНО КОД:

Когда я вызвал эти функции в функции main(), я получил ошибку: поезд не определен

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

В rem_miss_vals() я четко возвращать их, но я не понимаю, whay я не в состоянии использовать поезд, цель и тест в get_variable_rankings() функция

Может кто-то пожалуйста, помогите?

ответ

3

Вы должны назначить возвращаемые значения некоторых переменных, так что они находятся в области:

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

В качестве альтернативы, восклицательный знак их непосредственно к следующей функции:

variablerankings = get_variable_rankings(*rem_miss_vals(trainDF, testDF)) 
+0

имеет в виду распаковка как «splat» или «splatting», популярная у пользователей python? – Scott

+1

Да, '*' часто называют _splat operator_. – wim

Смежные вопросы