逻辑回归分类器

逻辑回归与线性回归非常类似,线性回归下,我们根据训练集求出下列线性方程的参数w和b(使用最小二乘法):
y=wx+b y=wx+b y=wx+b

式中,x是自变量,y是因变量。x为特征向量,多分类下,y是分类标签向量,其元素个数就是分类数,形如:
[0,0,0...1] [0,0,0...1] [0,0,0...1]

二分类下,y则是标量数值。

有了w和b,对测试集中的每个输入就能算出结果y。

逻辑回归则在线性回归的基础上通过函数L再对y做归一化处理:
p=L(wx+b) p=L(wx+b) p=L(wx+b)

之后再做分类。

对于二分类,L一般是logistic函数(即sigmoid函数),p是标量数值,其值域是(0,1)。我们根据
max(p,1−p) max(p,1-p) max(p,1p)

决定因变量是0还是1,从而达到分类的效果。

对于多分类,L一般是softmax函数,p为一向量,向量长度为多分类的类别数,向量元素之和为1。我们取出p中最大的元素,其对应的类别就是多分类的结果。

由于逻辑回归是线性回归的结果套了一个归一化层(logistic或softmax),所以逻辑回归只能用于分类,线性回归则用于预测。

下面是一段验证代码:

from sklearn.linear_model import LogisticRegression
def test_lr():
    # 指定multinomial,表明使用softmax归一化
    lr = LogisticRegression(multi_class='multinomial', solver='lbfgs')

    # 拟合数据 
    lr.fit([[1, 1, 1], [1, 0, 1], [1, 1, 0], [1, 0, 0], [0,2,1]], [0,1,1,0,2])
    # lr.fit([[1, 1, 1], [1, 0, 1], [1, 1, 0], [1, 0, 0]], [0,1,1,0])
    
    # 类别:[0 1 2]
    print lr.classes_ 
    
    # 拟合出来的系数,因为类别数为3,特征数为3,所以系数是3x3的矩阵
    #[[ 0.23430736 -0.30624064 -0.10175753]
    #[ 0.23430736 -0.30624064 -0.10175753]
    #[-0.46861473  0.61248127  0.20351505]]
    print lr.coef_ 
    
    # 根据拟合系数算出的y值 [[ 0.67558907  0.67558907 -1.35117813]]
    print lr.decision_function([[1,0,0]])
    
    # y值softmax后的概率值:[[ 0.46909578  0.46909578  0.06180843]]
    print lr.predict_proba([[1,0,0]])
    
    # 分类结果: [1]
    print lr.predict([[1,0,0]])
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值