Python | 您所在的位置:网站首页 › 回归coef是什么意思网络用语 › Python |
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_\theta(x) = \frac{1}{1 + e^{(-\theta^Tx)} } \]其中 \(\theta\)是模型参数,其实 \(\theta^Tx\)就是一个线性表达式,将这个表达式的结果再一次利用 Logistic 函数映射到 0~1 之间。 知道了这个,也就可以搞清楚那个clf.coef_和clf.intercept_了: clf.coef_和clf.intercept_就是 $ \theta $,下面我们来验证一下: 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! |
CopyRight 2018-2019 实验室设备网 版权所有 |