本文主要搬运的是sklearn中文文档,然后自己又在此基础上补充了一些,欢迎转发学习。
广义线性模型
本章主要讲述一些用于回归的方法,其中目标值 y 是输入变量 x 的线性组合。 数学概念表示为:如果是预测值,那么有:
在整个模块中,我们定义向量 作为 coef_ ,定义
为 intercept_ 。(coef的英文意思是系数,intercept的英文意思是截断,正好对应着线性回归中的斜率和截距,不过这个斜率是由很多个权重组成的)。
1、普通最小二乘法
主要用到sklearn中的linearRegression类,LinearRegression 拟合一个带有系数的线性模型,使得数据集实际观测数据和预测数据(估计值)之间的残差平方和最小。其数学表达式为:
如下图所示:
下面介绍一下sklearn中LinearRegression的用法:
class sklearn.linear_model.LinearRegression(fit_intercept=True,normalize=False,copy_X=True,n_jobs=1)
参数:
fit_intercept::布尔型,默认为True
说明:是否对训练数据进行中心化,即是否需要b值,若果为False,则不需要。
normalize:布尔型,默认为False
说明:是否对数据进行归一化处理。
copy_X:布尔型,默认为True
说明:是否对X复制,如果选择False,则直接对原数据进行覆盖。(即经过中心化,归一化后,是否把新数据覆盖到原数据上),true则赋值X。
n_jobs :整型, 默认为1
说明:计算时设置的任务个数(number of jobs)。如果选择-1则代表使用所有的CPU。这一参数的对于目标个数>1(n_targets>1)且足够大规模的问题有加速作用。
属性:
coef_ :数组型变量, 形状为(n_features,)或(n_targets, n_features)
说明:对于线性回归问题计算得到的feature的系数,即权重向量。如果输入的是多目标问题,则返回一个二维数组(n_targets, n_features);如果是单目标问题,返回一个一维数组(n_features,)。
intercept_ :数组型变量
说明:线性模型中的独立项,即b值。
singular_ :数组,形状为 (min(X, y),)
说明:矩阵X的奇异值,仅在X为密集矩阵时有效
rank_ : 整型
说明:矩阵X的秩,尽在X为密集矩阵时有效。
方法:
后续练习的时候会遇到,这里先放个截图。
方法中参数解读:
fit(X,y,sample_weight=None):目的是拟合这个模型
X:形状是(n_samples, n_features),是训练数据。
y:形状是(n_samples, )或者(n_samples, n_targets),是目标值。
samples_weight : 形状是(n_samples, ),默认值是None,是每个样本的权重。
get_params(deep=True):目的是获得这个estimator的参数值。函数返回是个字典,参数名映射到它们的值。
deep:布尔类型,默认值为True,如果为真,将返回这个估计器的参数和包含的子对象,这些子对象是估计器。
predict(X) : 目的是利用这个模型进行预测。返回预测值,形状是(n_samples,),返回值是个浮点数。
X:样本,形状是(n_samples, n_features)
score(X,y,sample_weight = None):目的是决定系数。
解释如下:
set_params(**params) : 目的是获得这个评估器的参数,返回的是评估器实例。
**params:是个字典,里面是评估器参数。
实例:
见线性回归官网实例。
补充说明:参数return_X_y控制输出数据的结构,若选为True,则将因变量和自变量独立导出
普通最小二乘法的复杂度:
该方法使用 X 的奇异值分解来计算最小二乘解。如果 X 是一个形状为 (n_samples, n_features)的矩阵,设
, 则该方法的复杂度为
。