我的目标是包含一个“mod_type”参数,指示要运行的模型的类型,无论是决策树还是 knn,使用 kwargs 让用户传入可选的关键字参数“k”代表 knn,“max_depth”代表决策树. 如果用户传入这些,则在初始化模型时酌情使用它们。返回模型对象。
为此,我使用以下功能:
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
import pandas as pd
import numpy as np
from sklearn.neighbors import KNeighborsClassifier
def my_classification(x,y,mod_type,**kwargs):
if mod_type == "dt":
if max_d in kwargs.keys():
dt = DecisionTreeClassifier(max_depth=max_d.values())
dt.fit(x,y)
return dt
else:
dt = DecisionTreeClassifier()
dt.fit(x,y)
return dt
elif mod_type == "knn":
if k in kwargs.keys():
knn = KNeighborsClassifier(k.values())
knn.fit(x,y)
return knn
else:
knn = KNeighborsClassifier()
knn.fit(x,y)
return knn
else:
print("unavailable type")
iris = load_iris()
x = pd.DataFrame(iris.data)
y = iris.target
my_classification(x,y,"dt")
理解 kwargs 并不容易,但我想我现在可能拥有它,它给我的错误是:NameError: name 'max_d' is not defined
. 我已经尝试在函数之前创建它们,然后在其中更改它们,但它会打印模型而不做任何更改。
有人可以帮忙吗?
kwargs
是一个字典,参数的名称作为键,它们的值作为值。
这是您可以使用它的方式:
if mod_type == "dt":
if "max_d" in kwargs:
dt = DecisionTreeClassifier(max_depth=kwargs["max_d"])
...
elif mod_type == "knn":
if "k" in kwargs:
knn = KNeighborsClassifier(kwargs["k"])
...
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句