我正在尝试编写一个泛型函数来运行大多数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')
您不想传入csv字符串作为参数,但是可以使用**kwargs
。
使用参数名称和值创建字典,然后将其传递到以开头的函数中**
。
例如:
params = {'leaf_size': 30, 'n_neighbors': 6}
sklearn_mod(KNeighborsClassifier, **params)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句