将参数列表作为一个字符串传递给python函数

时间:2016-11-21 22:47:34

标签: python function parameter-passing

我正在尝试编写一个通用函数来运行大多数sklearn模型,我可以用它来快速浏览一行中的不同模型。如果我用数字替换leaf_size=30, n_neighbors=6,则以下代码有效。似乎期望第一个参数为n_neighbors并且需要一个数字。我希望能够传递两个信息的功能:a)模型名称b)一个字符串,其中包含我想传递给模型的所有参数。

有什么简单的我缺少或者这不可能吗?

def sklearn_mod(mod_name,param_list):
    mod = mod_name(param_list)
    mod.fit(features_train, target_train)
    print(mod)
    expected = target_test
    predicted_mod = mod.predict(features_test)
    print('-----')
    print "Accuracy of Model:", accuracy_score(target_test, predicted_mod)
    print('-----')
    print(classification_report(target_test, predicted_mod))
    y_pred = predicted_mod
    y_true = expected
    print(confusion_matrix(y_true, y_pred))
    print('-----')
    print('Cross Validation:')
    scores = cross_val_score(mod, features_train, target_train, cv=10)
    print(scores)
    print"Mean CV Accuracy:",scores.mean()
    print('-----');

sklearn_mod(KNeighborsClassifier,'leaf_size=30, n_neighbors=6')

1 个答案:

答案 0 :(得分:1)

您不希望传入csv字符串作为参数,但可以使用**kwargs

使用参数名称和值创建一个dict,然后将其传递到**前面的函数中。

例如:

params = {'leaf_size': 30, 'n_neighbors': 6}
sklearn_mod(KNeighborsClassifier, **params)