以下是一组用于回归的方法,其中目标值应该是输入变量的线性组合。在数学概念中,如果 y ^ \widehat{y} y 是预测值。
y ^ ( w , x ) = w 0 + w 1 x 1 + . . . + w p x p \widehat{y}(w,x) = w_{0} + w_{1}x_{1} + ... + w_{p}x_{p} y (w,x)=w0+w1x1+...+wpxp
在整个模块中,我们指定向量 w = ( w 1 , . . . , w p ) w = (w_{1},...,w_{p}) w=(w1,...,wp) 作为coef_和将 w 0 w_{0} w0作为intercept_。
要使用广义线性模型进行分类,请参阅 Logistic回归。
L i n e a r R e g r e s s i o n LinearRegression LinearRegression 拟合具有系数 w = ( w 1 , . . . , w p ) w=(w_{1},...,w_{p}) w=(w1,...,wp)的线性模型,以最小化数据集中观察到的响应与线性近似预测的响应之间的残差平方和。 在数学上它解决了如下形式的问题:
m i n w ∣ ∣ X w − y ∣ ∣ 2 2 \underset{w}{min} ||Xw-y||_{2}^{2} wmin∣∣Xw−y∣∣22
L i n e a r R e g r e s s i o n LinearRegression LinearRegression 将采用其拟合方法数组 X X X, y y y, 并将线性模型的系数存储在其 coef_ 成员中:
from sklearn import linear_model
reg = linear_model.LinearRegression()
reg.fit([[0, 0], [1, 1], [2, 2]], [0, 1, 2])
...
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)
reg.coef_
array([0.5, 0.5])
>>> from sklearn import linear_model
>>> reg = linear_model.LinearRegression()
>>> reg.fit ([[0, 0], [1, 1], [2, 2]], [0, 1, 2])
…
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,
normalize=False)
>>> reg.coef_
array([0.5, 0.5])
然而,普通最小二乘的系数估计依赖于模型项的独立性。当术语相关并且设计矩阵的列具有近似线性相关性时,设计矩阵 X X X 变得接近单数. 结果,最小二乘估计变得对观察到的响应中的随机误差高度敏感,产生大的方差。例如,在没有实验设计的情况下收集数据时,可能出现这种多重共线性的情况。
E x a m p l e s : Examples: Examples:
还计算出了系数(Coefficients),残差平方和(Mean Squared Error)和方差(Variance)分数。
print(__doc__)
# Code source: Jaques Grobler
# License: BSD 3 clause
import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets, linear_model
from sklearn.metrics import mean_squared_error, r2_score
# Load the diabetes dataset
diabetes = datasets.load_diabetes()
# Use only one feature
diabetes_X = diabetes.data[:, np.newaxis, 2]
# Split the data into training/testing sets
diabetes_X_train = diabetes_X[:-20]
diabetes_X_test = diabetes_X[-20:]
# Split the targets into training/testing sets
diabetes_y_train = diabetes.target[:-20]
diabetes_y_test = diabetes.target[-20:]
# Create linear regression object
regr = linear_model.LinearRegression()
# Train the model using the training sets
regr.fit(diabetes_X_train, diabetes_y_train)
# Make predictions using the testing set
diabetes_y_pred = regr.predict(diabetes_X_test)
# The coefficients
print('Coefficients: \n', regr.coef_)
# The mean squared error
print("Mean squared error: %.2f"
% mean_squared_error(diabetes_y_test, diabetes_y_pred))
# Explained variance score: 1 is perfect prediction
print('Variance score: %.2f' % r2_score(diabetes_y_test, diabetes_y_pred))
# Plot outputs
plt.scatter(diabetes_X_test, diabetes_y_test, color='black')
plt.plot(diabetes_X_test, diabetes_y_pred, color='blue', linewidth=3)
plt.xticks(())
plt.yticks(())
plt.show()
Total running time of the script: ( 0 minutes 0.070 seconds)
该方法使用 X X X 的奇异值分解来计算最小二乘解。如果 X X X 是大小 ( n , p ) (n, p) (n,p) 的矩阵,则该方法具有的开销为 O ( n p 2 ) O(np^{2}) O(np2),假设 $n \geqslant p $。
岭回归通过对系数的大小施加惩罚来解决普通最小二乘的一些问题。岭回归系数最小化了惩罚的残差平方和,
m i n w ∣ ∣ X w − y ∣ ∣ 2 2 + α ∣ ∣ w ∣ ∣ 2 2 \underset{w}{min}||Xw-y||_{2}^{2} + \alpha||w||_{2}^{2} wmin∣∣Xw−y∣∣22+α∣∣w∣∣22
这里, α ⩾ 0 \alpha \geqslant 0 α⩾0是控制收缩量的复杂的参数: α \alpha α值越大,收缩量越大,因此系数对共线性越稳健。
与其他线性模型一样, R i d g e Ridge Ridge 将采用其拟合方法数组 X X X, y y y并将线性模型的系数存储在其 coef_ 成员中:
>>> from sklearn import linear_model
>>> reg = linear_model.Ridge(alpha = .5)
>>> reg.fit([[0, 0], [0, 0], [1, 1]], [0, 0.1, 1])
Ridge(alpha=0.5, copy_X=True, fit_intercept=True, max_iter=None, normalize=False, random_state=None, solver='auto', tol=0.001)
>>> reg.coef_
array([0.34545455, 0.34545455])
>>> reg.intercept_
0.13636...
E x a m p l e s : Examples: Examples:
Plot Ridge coefficients as a function of the regularization
Classification of text documents using sparse features
岭回归方法与普通的最小二乘法具有相同的复杂度。
R i d g e C V RidgeCV RidgeCV 通过 a l p h a alpha alpha 参数的内置交叉验证实现岭回归。 该对象的工作方式与 G r i d S e a r c h C V GridSearchCV GridSearchCV 相同,不同之处在于它默认为广义交叉验证(Generalized Cross-Validation,GCV),这是一种有效的一次性交叉验证形式:
>>> from sklearn import linear_model
>>> reg = linear_model.RidgeCV(alphas=[0.1, 1.0, 10.0], cv=3)
>>> reg.fit([[0, 0], [0, 0], [1, 1]],[0, .1, 1])
RidgeCV(alphas=[0.1, 1.0, 10.0], cv=3, fit_intercept=True, scoring=None, normalize=False)
>>> reg.alpha_
0.1
参考:
“关于规则化最小二乘法的注释”,Rifkin和Lippert(技术报告,课程幻灯片)。
###1.1.8 LARS Lasso
1.6.1.1 找到最近的邻居
1.6.1.2 KDTree和BallTree类
###1.6.2 最近邻居分类
1.7.2.1 GPR具有噪声水平估计
1.7.2.2 GPR与核岭回归的比较
1.7.2.3 关于Mauna Loa CO2数据的GPR
1.7.4.1 GPC的概率预测
1.7.4.2 GPC在XOR数据集上的插图
1.7.4.3 虹膜数据集上的高斯过程分类(GPC)
1.7.5.1 高斯过程内核API
1.7.5.2 基本内核
1.7.5.3 内核运算符
1.7.5.4 径向基函数(RBF)内核
1.7.5.5 Matérn内核
1.7.5.6 有理二次核
1.7.5.7 Exp-Sine-Squared内核
1.7.5.8 点 - 产品内核
1.7.5.9 参考
1.11.2.1 随机森林
1.11.2.2 极度随机的树木
1.11.2.3 参数
1.11.2.4 并行
1.11.2.5 特征重要性评估
1.11.2.6 完全随机树嵌入
1.11.3.1 用法
1.11.4.1 分类
1.11.4.2 回归
1.11.4.3 适合其他弱学习者
1.11.4.4 控制树的大小
1.11.4.5 数学公式
1.11.4.5.1 损失函数
1.11.4.6 正则
1.11.4.6.1 收缩
1.11.4.6.2 子采样
1.11.4.7 解释
1.11.4.7.1 特征重要性
1.11.4.7.2 部分依赖
1.11.5.1 多数类标签(多数/硬投票)
1.11.5.1.1 用法
1.11.5.2 加权平均概率(软投票)
1.11.5.3 将VotingClassifier与GridSearch 一起使用
1.11.5.3.1 用法
1.12.2.1 多类学习
1.12.2.2 多标签学习
1.12.3.1 多类学习
1.12.4.1 多类学习
1.13.4.1 基于L1的特征选择
1.13.4.2 基于树的特征选择
标签(空格分隔): 未分类
在此输入正文