【发布时间】:2019-02-05 10:28:09
【问题描述】:
问题: Logistic Regression 使用 alpha = 0.1 训练 L1 正则化和 L2 正则化的逻辑回归模型 和 lambda = 0.1。报告准确率、精确度、召回率、f1 分数并打印混淆矩阵
我的代码是:
_lambda = 0.1
c = 1/_lambda
classifier = LogisticRegression(penalty='l1',C=c)
classifier.fit(X_train, y_train)
y_pred = classifier.predict(X_test)
我不知道 alpha 和 lambda 的真正位置在哪里。 我做得对吗?
【问题讨论】:
-
您可以
print(classifier.C)检索用于训练模型的1/_lambda的值。那就是正则化参数。这里没有其他alpha设置。正则化的alpha设置仅用于SGDClassifier -
不能同时放l1和l2归一化参数。它是一个或另一个,否则你必须做一个弹性网络正则化,然后它是 SGDClassifier( 用弹性网络惩罚实现逻辑回归 (SGDClassifier(loss="log", 惩罚="elasticnet")))
-
嘿@Alexis,SGDClassifier 有 Lambda 和 Alpha 参数吗?
-
是的,它同时使用它们。来自 doc:正则化器是添加到损失函数的惩罚,它使用平方欧几里德范数 L2 或绝对范数 L1 或两者的组合(弹性网络)将模型参数缩小到零向量。尝试使用它,但在这样做之前阅读了很多。正如答案中提到的,如果您不了解自己在做什么,您将一事无成。
标签: python pandas scikit-learn