我已经阅读了Kaggle中的几个代码,并且遇到了模糊的实现。直到今天,我都不知道我们可以在模型上向外部声明一个变量。
from sklearn.linear_model import LogisticRegression
...
model = LogisticRegression()
....
model.loss = 0.01
model.penalty = 'l1'
model.l1_ratio = True
model.alpha = 'auto'
model.fit(x_train, y_train)
我知道Sklearn中的Logistic回归没有任何参数,除了惩罚外,我在SkleaLn本身中发现了另一种线性算法SGDClassifier,实际上接受所有这些参数,但对于'损失','l1_ratio''," alpha"数据类型不同。我知道每个参数的描述以及为什么在其他算法中使用它们,但我无法理解该声明背后的原因。对此实施的任何解释都将不胜感激。谢谢。
我认为使用此类声明的一种方法是使代码更模块化。这样的东西:
def get_clf(clf_type,loss,penalty):
my_clf = clf_type
my_clf.loss = loss
my_clf.penalty = penalty
return my_clf
现在可以将其视为通用功能,以使您的代码更模块化。因此,只要您需要创建分类器,就可以致电:
model = get_clf(LogisiticRegression(),0.01,'l1')
因此,即使您更改回归器,也只需要更改上述单行即可。同样,这一切都是关于个人编程风格以及如何习惯的。有些人喜欢声明定义本身中的参数,而有些人则喜欢您的问题。