Python 机器学习库 --- sklearn --- 线性模型

前言

额,这里不支持latex语法。就截图了。。。

下面介绍的方法均是用于求解回归问题,其目标值预计是输入一个变量的一个线性组合,用数学语言表示的: \hat{y}是预测值,则有

                            \hat{y}(\omega + x) = \omega_{0} + \omega_{1}x_{1} + ...+\omega_{p}x_{p}

在这里称向量\omega=(\omega{1}, ... ,\omega{p})为 coef \omega{0}称为intercept_

普通最小二乘法

线性回归中使用系数\omega=(\omega{1}, ..., \omega{p})拟合一个线性模型,拟合的目标是要将线性逼近预测值X_{\omega} 和数据集中观察到的值y两者之差的平方和尽量降到最小,写成数学表达式为:


\underset{\omega}{min}||X_{\omega}-y||_{2}^{2}

线性回归中的fit方法接受数组X和y作为输入,将线性模型的系数\omega存在成员变量coef_中:

>>> from sklearn import linear_model                        #导入线性模型
>>> reg = linear_model.LinearRegression()                    #reg为线性回归
>>> print reg.fit ([[0, 0], [1, 1], [2, 2]], [0, 1, 2])        #对输入输出进行拟合
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)
#copy_X: 是否备份     fit_intercept: 是否保存截距      n_jobs: 任务数量   normalize: 是否标准化
>>> print reg.coef_                                            #系数矩阵(模型的权重)
array([0.5, 0.5])
>>> print reg.intercept_                                    #训练后模型截距
1.1102230246251565e-16
>>> print reg.predict([[2, 5]])                                #训练后模型预测
array([3.5])
>>> print reg.normalize                                        #训练是否标准化
False
>>> print reg.get_params                                    #获取模型训练前设置的参数
<bound method LinearRegression.get_params of LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)>

普通二乘法的系数预测取决于模型中各个项的独立性,假设各项相关,矩阵X的列总体呈现出线性相关,那么X就会很接近奇异矩阵,其结果就是经过最小二乘得到的预测值会对原始数据中的随机误差高度敏感,从而每次预测都会产生比较大的方差,这种情况称为重共线性,例如,在数据未经实验设计就进行收集时就会发生重共线性。

还有一个线性回归的例子

import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets, linear_model

# 读取自带的diabete数据集
diabetes = datasets.load_diabetes()


# 使用其中的一个feature
diabetes_X = diabetes.data[:, np.newaxis, 2]

# 将数据集分割成training set和test set
diabetes_X_train = diabetes_X[:-20]
diabetes_X_test = diabetes_X[-20:]

# 将目标(y值)分割成training set和test set
diabetes_y_train = diabetes.target[:-20]
diabetes_y_test = diabetes.target[-20:]

# 使用线性回归
regr = linear_model.LinearRegression()

# 进行training set和test set的fit,即是训练的过程
regr.fit(diabetes_X_train, diabetes_y_train)

# 打印出相关系数和截距等信息
print('Coefficients: \n', regr.coef_)
# The mean square error
print("Residual sum of squares: %.2f"
      % np.mean((regr.predict(diabetes_X_test) - diabetes_y_test) ** 2))
# Explained variance score: 1 is perfect prediction
print('Variance score: %.2f' % regr.score(diabetes_X_test, diabetes_y_test))

# 使用pyplot画图
plt.scatter(diabetes_X_test, diabetes_y_test,  color='black')
plt.plot(diabetes_X_test, regr.predict(diabetes_X_test), color='blue',
         linewidth=3)

plt.xticks(())
plt.yticks(())

plt.show()

普通最小二乘法的复杂度

此方法使用的X的奇异值分解来求解最小二乘 如X是n*p矩阵,则算法复杂度为O(np^{2}){\ge}p,假设n .

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏华章科技

三天速成!香港科技大学TensorFlow课件分享

该教程第一天先介绍了深度学习和机器学习的潜力与基本概念,而后便开始探讨深度学习框架 TensorFlow。首先我们将学到如何安装 TensorFlow,其实我们...

602
来自专栏机器之心

三天速成!香港科技大学TensorFlow课件分享

机器之心整理 参与:蒋思源 这是一套香港科技大学发布的极简 TensorFlow 入门教程,三天全套幻灯片教程已被分享到 Google Drive。机器之心将简...

42812
来自专栏大数据挖掘DT机器学习

银行风控案例:Logistics模型预测银行贷款违约

在面试中会经常碰到考察对数据挖掘算法的熟悉程度,面试官会出一道题或给出一些数据,让你结合实际谈谈你选择什么模型,该模型的大致原理是什么,使用条件有哪些,模型优缺...

34512
来自专栏数据科学与人工智能

【知识】图解机器学习

每当提到机器学习,大家总是被其中的各种各样的算法和方法搞晕,觉得无从下手。确实,机器学习的各种套路确实不少,但是如果掌握了正确的路径和方法,其实还是有迹可循的,...

2045
来自专栏人工智能LeadAI

梯度下降法快速教程 | 第一章:Python简易实现以及对学习率的探讨

前言 梯度下降法(Gradient Descent)是机器学习中最常用的优化方法之一,常用来求解目标函数的极值。 其基本原理非常简单:沿着目标函数梯度下降的方向...

3458
来自专栏机器学习算法与Python学习

支持向量机(SVM)--(4)

回忆:在上一篇文章中我们谈到为了使支持向量机能够处理非线性问题,进而引进核函数,将输入空间的输入数据集通过一个满足Mercer核条件的核函数映射到更高...

2716
来自专栏人工智能LeadAI

基于Spark /Tensorflow使用CNN处理NLP的尝试

01 前言 关于CNN如何和NLP结合,其实是被这篇文章(http://www.wildml.com/2015/11/understanding-convolu...

3406
来自专栏机器人网

图解机器学习(清晰的路线图)

每当提到机器学习,大家总是被其中的各种各样的算法和方法搞晕,觉得无从下手。确实,机器学习的各种套路确实不少,但是如果掌握了正确的路径和方法,其实还是有迹可循的,...

3879
来自专栏算法channel

全面总结机器学习项目和面试中几乎绕不开的决策树

决策树是一种常见的机器学习算法,它的思想十分朴素,类似于我们平时利用选择做决策的过程。

820
来自专栏量化投资与机器学习

【原创精品】使用R语言gbm包实现梯度提升算法

原创推文预告(绿色为已发布,点击标题即可阅读) ● 随机森林在因子选择上的应用基于Matlab ● 择时策略:在一天的何时进行交易 ● 主题模型 - LD...

2707

扫码关注云+社区