逻辑回归

2018-11-07  本文已影响0人  61etj

逻辑回归

常用于分类中将线性回归转换为概率值[0,1]

image

损失函数重新定义

image

当有多个样本时

image

代入

image

scikit_learn

image

使用逻辑回归会默认自动使用L2正则化,为了必须使用正则化,所以我们前面说的正则化前的比重参数就被删除了, 转而为之的是超参数C,这个C是乘以损失函数的。也就是让我们用来调节损失函数的比重,但正则化一定会存在

from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler

def PolynomialLogisticRegression(degree, C, penalty='l2'):
    return Pipeline([
        ('poly', PolynomialFeatures(degree=degree)),
        ('std_scaler', StandardScaler()),
        ('log_reg', LogisticRegression(C=C, penalty=penalty))#C为损失函数权重,penalty为使用的正则算法
    ])

poly_log_reg = PolynomialLogisticRegression(degree=2,C=0.1)
poly_log_reg.fit(X_train, y_train)
poly_log_reg.score(X_train, y_train)

也可以单独使用

from sklearn.multiclass import OneVsRestClassifier

ovr = OneVsRestClassifier(log_reg)
ovr.fit(X_train, y_train)
ovr.score(X_test, y_test)

逻辑回归解决多分类

    log_reg = LogisticRegression(multi_class="multinomial", solver="newton-cg")#multi_class默认使用OvR,这里使用OvO。当使用OvO时,因为scikit-learn不是使用梯度下降,是使用更快的算法,所以这里要重新指定算法来计算OvO

也可以单独使用

from sklearn.multiclass import OneVsOneClassifier

ovo = OneVsOneClassifier(log_reg)
ovo.fit(X_train, y_train)
ovo.score(X_test, y_test)
上一篇 下一篇

猜你喜欢

热点阅读