未知变量声明

时间:2017-09-26 06:50:37

标签: python scikit-learn logistic-regression

我一直在用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中的逻辑回归除了惩罚之外没有任何其他参数,我在sklearn本身找到了另一个线性算法SGDClassifier,它实际上接受了所有这些参数,但是对于'loss','l1_ratio' ,'alpha'数据类型不同。我知道每个参数的描述以及它们在其他算法中使用的原因,但我无法理解这个声明背后的原因。非常感谢对此实现的任何解释。谢谢。

1 个答案:

答案 0 :(得分:0)

我认为使用这种声明的一种方法是使代码更加模块化。像这样:

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')

因此,即使您更改了回归量,也只需要更改上面的单行。再一次,它是关于编程的个人风格以及如何使用它。有些人喜欢在定义中声明参数,而有些人则喜欢在你的问题中明确地说明。