【发布时间】:2016-11-21 22:47:33
【问题描述】:
我正在尝试编写一个通用函数来运行大多数 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')
【问题讨论】:
-
我觉得我做得太难了。我认为这在我定义的函数中只使用一个参数值会更好。我认为这样称呼它会更好:sklearn_mod(KNeighborsClassifier(n_neighbors=6, leaf_size=30))
标签: python function parameter-passing