intercept
使用sklearn
库可以很方便的实现各种基本的机器学习算法,例如今天说的逻辑斯谛回归(logistic regression),我在实现完之后,可能陷入代码太久,忘记基本的算法原理了,突然想不到 coef_
和 intercept_
具体是代表什么意思了,就是具体到公式中的哪个字母,虽然总体知道代表的是模型参数。
好尴尬,折腾了一会,终于弄明白了,记录下来,以说明自己too young。
正文
我们使用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_
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
输出如图:
可以看到 clf.coef_
是一个3×2(n_class, n_features)
的矩阵,clf.intercept_
是一个1×3的矩阵(向量),那么这些到底是什么意思呢?
我们来回顾一下Logistic回归的模型:
hθ(x)=11+e(−θTx)
其中 θ 是模型参数,其实 θTx 就是一个线性表达式,将这个表达式的结果再一次利用Logistic函数映射到0~1之间。
知道了这个,也就可以搞清楚那个 clf.coef_
和 clf.intercept_
了: clf.coef_
和 clf.intercept_
就是 θ ,下面我们来验证一下:
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))
- 1
- 2
- 3
- 4
- 5
- 6
输出结果:
可以看到结果是吻合的,说明我们的猜想是正确的。
END
相关阅读
导读: 本案例主要是熟悉ajax+json这种前后端交互的模式,网页端使用ajax发送请求,服务器则返回json数据,这样做的好处,就是降低开发耦合
相信有不少人跟我一样,有时候空闲时间多就会在网上找一些兼职来做,毕竟这样不仅可以缓解我们的经济压力,同时还能让这些空余的时间更
很多朋友选择在淘宝开店,但有一个问题就是税收,因为如果交易额很大的话,那么就需要去交税的,到底2018年淘宝开店收税吗?应该有很多的
虽然说近两年在淘宝平台开店已经过了红利期,但是也不可否认的是这个平台的超大流量,如果运营得当还是可以分到一杯美羹的。所以很多
在.cpp源程序中,我们常常会发现这样的头文件中,这样的引用:#include"stdafx.h" #include<iostream> using namespace std; 介绍:st