zoukankan      html  css  js  c++  java
  • Python——sklearn 中 Logistics Regression 的 coef_ 和 intercept_ 的具体意义

    sklearn 中 Logistics Regression 的 coef_ 和 intercept_ 的具体意义

    ​ 使用sklearn库可以很方便的实现各种基本的机器学习算法,例如今天说的逻辑斯谛回归(Logistic Regression),我在实现完之后,可能陷入代码太久,忘记基本的算法原理了,突然想不到coef_intercept_具体是代表什么意思了,就是具体到公式中的哪个字母,虽然总体知道代表的是模型参数。

    正文

    我们使用 sklearn 官方的一个例子来作为说明,源码可以从这里下载,下面我截取其中一小段并做了一些修改:

    import numpy as np
    import matplotlib.pyplot as plt
    from sklearn.datasets import make_blobs
    from sklearn.linear_model import LogisticRegression
    	
    # 构造一些数据点
    centers = [[-5, 0], [0, 1.5], [5, -1]]
    X, y = make_blobs(n_samples=1000, centers=centers, random_state=40)
    transformation = [[0.4, 0.2], [-0.4, 1.2]]
    X = np.dot(X, transformation)
    	
    clf = LogisticRegression(solver='sag', max_iter=100, random_state=42, multi_class=multi_class).fit(X, y)
    
    print clf.coef_ 
    print clf.intercept_
    

    输出如图:

    可以看到clf.coef_是一个3×2(n_class, n_features)的矩阵,clf.intercept_是一个1×3的矩阵(向量),那么这些到底是什么意思呢?

    我们来回顾一下 Logistic 回归的模型:

    [h_ heta(x) = frac{1}{1 + e^{(- heta^Tx)} } ]

    其中 ( heta)是模型参数,其实 ( heta^Tx)就是一个线性表达式,将这个表达式的结果再一次利用 Logistic 函数映射到 0~1 之间。

    知道了这个,也就可以搞清楚那个clf.coef_clf.intercept_了: clf.coef_clf.intercept_就是 $ heta $,下面我们来验证一下:

    i = 100
    print 1 / (1 + np.exp(-(np.dot(X[i].reshape(1, -1), cc.T) + clf.intercept_)))
    # 正确的类别
    print y[i]
    print clf.predict_proba(X[i].reshape(1, -1))
    print clf.predict_log_proba(X[i].reshape(1, -1))
    

    输出结果:

    可以看到结果是吻合的,说明我们的猜想是正确的。



    原文链接:https://blog.csdn.net/u010099080/article/details/52933430!

  • 相关阅读:
    C# 3.0新特性
    WinForm上显示gif动画
    Sql Server中Case函数的使用(上篇)转载
    Jquery的$命名冲突:
    Sql Server中case函数的使用(下篇) 转载
    hdu 2544 2066 1874 2680
    伤感!
    hdu 1999 不可摸数
    hdu 1878欧拉回路
    hdu 2767
  • 原文地址:https://www.cnblogs.com/LCharles/p/12162077.html
Copyright © 2011-2022 走看看