线性回归

线性回归 - 机器学习多元线性回归 - 一步一步详解 - Python代码实现

风流意气都作罢 提交于 2019-11-26 15:33:31
目录 数据导入 单变量线性回归 绘制散点图 相关系数R 拆分训练集和测试集 多变量线性回归 数据检验(判断是否可以做线性回归) 训练线性回归模型 先甩几个典型的线性回归的模型,帮助大家捡起那些年被忘记的数学。 ● 单变量线性回归: h(x)=theta0 + theta1* x 1 ● 多变量线性回归: h(x)=theta0 + theta1* x 1 + theta2* x 2 + theta3* x 3 ● 多项式回归: h(x)=theta0 + theta1* x 1 + theta2* (x2^2) + theta3* (x3^3) 多项式回归始终还是线性回归,你可以令x2=x2^2,x3=x3^3,简单的数据处理一下就好了,这样上述多项式回归的模型就变成多变量线性回归的模型了。 数据导入 下面我们要开始用数据说话了,先来看看数据源是什么样子吧。 import pandas as pd import numpy as np import matplotlib.pyplot as plt from pandas import DataFrame,Series from sklearn.cross_validation import train_test_split from sklearn.linear_model import LinearRegression

一元线性回归VS多元线性回归

╄→гoц情女王★ 提交于 2019-11-26 15:32:56
一元线性回归和多元线性回归表面意思容易理解,但是结合实际的数据集,会混乱。这也是在编写线性回归博文的时候梳理知识点发现自己的不足,同时记录下来,让有疑问的同学也可以得到答案,拨开乌云。 1.在数据集上的异同 一元线性回归: 给定数据集 ,其中 ,样本有1个属性描述。 VS 多元线性回归: 给定数据集 ,其中 , ,样本有d个属性描述。 2.向量表达式 一元线性回归: VS 多元线性回归: 来源: CSDN 作者: wyh_wen 链接: https://blog.csdn.net/qq_42370261/article/details/83933271

8.线性回归之非线性回归

一个人想着一个人 提交于 2019-11-26 15:32:32
起步 非线性回归是线性回归的延伸,线性就是每个变量的指数都是 1,而非线性就是至少有一个变量的指数不是 1。生活中,很多现象之间的关系往往不是线性关系。选择合适的曲线类型不是一件轻而易举的工作,主要依靠专业知识和经验。常用的曲线类型有 幂函数,指数函数,抛物线函数,对数函数和S型函数 。 化非线性回归为线性回归 通过变量代换,可以将很多的非线性回归转化为线性回归。比如目标函数假设是 y = b0 + b1x + b2x^2 。那么另 z1 = x, z2 = x^2 。目标函数就变为 y = b0 + b1z1 + b2z2 。就可以用线性回归来解方程了而用上一篇文章《线性回归之多元线性回归》就能解决线性回归的问题。常见的转化模型有: 逻辑回归 逻辑回归是(Logistic Regression)是非线性回归中的一种,在分类问题上有的也能采用逻辑回归分类。这是一个二分器。比如根据肿瘤的大小来判断其良性或恶性,线性方程显然不能够胜任了: 逻辑回归模型中,先给定线性函数: 虽然这边是 θ 表示,但其实和线性回归中 b 是一个意思,都是作为自变量的系数。在二分类器中,经常需要一个分界线作为区分两类结果。再次需要一个函数进行曲线平滑化,由此引入 Sigmoid 函数进行转化: 这样,以0.5作为分界线。因此逻辑回归的最终目标函数就是: 回归就是用来得到样本属于某个分类的概率

线性回归从一元线性回归入门

半世苍凉 提交于 2019-11-26 15:32:08
本文是从一元线性回归为为基础来理解线性回归,适合于线性回归的入门,让初学者对于线性回归有直观的理解。本文也是我对于线性回归算法入门学习,分享给大家。 线性回归的定义 回归是用于应用于输入变量与输出变量的关系,在输入变量与输出变量之间做一个映射,一般的线性回归公式为 其中θ为权重参数,现在给定的数据是给定一些X与其对应的Y值,需要求解一组θ,将X映射到Y,在无误差的情况下,用n组已知的X与Y数据,用解方程的方式就可以解出θ。由于误差的存在,用n组数据解出的一组θ并不满足剩于组的数据,并且会一些矛盾解。现在将问题转为如何求解一组θ,让X最优映射到Y。下面从最简单的一元线性回归来理解说明回归的思想,如果一元线性回归的原理理解了,多维线性回归就理解了。 一元线性回归 一元线性回归,表示只有一个因变量,从数学公式来说就是一条直线,数学公式: 我们用来生成100组数据,给定,a,b的,将产生的值叠加噪声,现在通过这100组值,来求解出 让 与a,b接近。下面是程序生的100数据,后面所有的计算都是基于这100组数据产生的。 import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from numpy import * sampleSize = 100 mu = 0

机器学习-----线性回归浅谈(Linear Regression)

旧时模样 提交于 2019-11-26 11:37:07
Linear Regreesion 在现实生活中普遍存在着变量之间的关系,有确定的和非确定的。确定关系指的是变量之间可以使用函数关系式表示,还有一种是属于非确定的(相关),比如人的身高和体重,一样的身高体重是不一样的。 线性回归: 1: 函数模型(Model): 假设有训练数据 那么为了方便我们写成矩阵的形式 2: 损失函数(cost): 现在我们需要根据给定的X求解W的值,这里采用最小二乘法。 a.最小二乘法: 何为最小二乘法,其实很简单。我们有很多的给定点,这时候我们需要找出一条线去拟合它,那么我先假设这个线的方程,然后把数据点代入假设的方程得到观测值,求使得实际值与观测值相减的平方和最小的参数。对变量求偏导联立便可求。 因此损失代价函数为: 3 : 算法(algorithm): 现在我们的目的就是求解出一个使得代价函数最小的W: a.矩阵满秩可求解时(求导等于0): b.矩阵不满秩时(梯度下降): 梯度下降算法是一种求局部最优解的方法,对于F( x ),在a点的梯度是F( x )增长最快的方向,那么它的相反方向则是该点下降最快的方向,具体参考 wikipedia 。 原理:将函数比作一座山,我们站在某个山坡上,往四周看,从哪个方向向下走一小步,能够下降的最快; 注意:当变量之间大小相差很大时,应该先将他们做处理,使得他们的值在同一个范围,这样比较准确。 1)首先对θ赋值

一、线性回归算法梳理

廉价感情. 提交于 2019-11-26 08:50:59
1.机器学习的一些概念 有监督、无监督、泛化能力、过拟合欠拟合(方差和偏差以及各自解决办法)、交叉验证 有监督:数据集有有已知的y值(label 结果) 无监督:数据集中没有y值,需要根据近似性关系分成一簇一簇的聚类来当作y值来评估 泛化能力:指算法对具有同一规律的学习集以外的数据,的适用程度,对其它样本的适应能力 过拟合:over-fitting,指模型在训练样本中表现过好,要求过于精细,导致泛化能力减弱,在验证数据集和测试集中表现不佳。用图表示就是曲线起伏过大,不平稳。也称高方差。 解决办法:过拟合可以通过减少参数,加入正则惩罚项 L1(绝对值项) L2,变化学习率,尽可能扩大数据集选取范围等方式解决。 欠拟合:under-fitting,与上相反,指模型过于简单或训练样本做的不够,比如特征过省,导致的模型在验证集测试集数据中表现不好,没有代表性。用图表现就是一条无起伏的线。也称高偏差。 解决办法:欠拟合可以通过交叉验证,让特征较少的情况多次迭代交替使用训练集和验证集,达到优化,或跟据相关性添加其它特征项,减少正则化参数。神经网络可以加结点加层数。 交叉验证:把特征分成几部分:一些作为训练集一些做验证集,下一次交换角色,用验证集数据做训练集,训练集做验证集,交替多次充份训练验证数据。 2.线性回归的原理 线性回归是利用数理统计中回归分析

如何评价算法的好坏?

元气小坏坏 提交于 2019-11-26 02:09:43
2019-11-23 18:32:55 序言 评价一个算法的好坏,我认为关键是看能不能解决问题。如果算法能很好地解决实际的问题,那么我认为就是好算法。 比如预测的算法,关键是看预测的准确率,即预测值与实际值之间的接近程度,而不是看算法本身的评分高低。 在《 如何用人工智能预测双 11 的交易额 》这篇文章中,利用线性回归算法,我预测 2019 年双 11 交易额为 2471 亿元,而阿里官方公布的实际交易额是 2684 亿元,预测值比实际值少 7.9%,对这个结果,我觉得准确率不够高。反思预测的过程,我认为可以从以下几个方面来进行改进。 1. 样本 为了简化算法模型,我舍弃掉了前几年相对较小的数据,只保留了最近 5 年的数据。 在数据量本身就比较少的情况下,我仍然遵循简单原则,这无形中就加大了算法不稳定的风险,出现了欠拟合的问题。 尽管算法的评分很高,但是评分高并不代表算法就好。所以,样本的选择非常重要,不能单纯地追求算法的评分高,而忽略样本的质量。 2. 算法 如果保留所有样本,那么显然数据呈现的规律并不是线性的,用多项式回归算法应该是个更好的选择。 假如用三次多项式回归算法进行预测,那么算法代码如下: # 导入所需的库 import numpy as np import pandas as pd import matplotlib.pyplot as plt from

初步学习Scikit-learn(sklearn)

ぃ、小莉子 提交于 2019-11-26 00:51:56
Scikit-learn是个简单高效的数据分析工具,它其中封装了大量 的机器学习算法,内置了大量的公开数据集,并且拥有完善的文档。 1 用KNN算法实现鸢尾花的分类 鸢尾花是在模式识别文献中最有名的数据库。数据集包含3个类,每类有50个实例,每个类指向一种类型的鸢尾花。一类与另外两类线性分离,而后者不能彼此线性分离。 鸢尾花数据集特征: 属性数量: 4 (数值型,数值型,帮助预测的属性和类) 属性信息: sepal length 萼片长度(厘米) sepal width 萼片宽度(厘米) petal length 花瓣长度(厘米) petal width 花瓣宽度(厘米) 类别: Iris-Setosa 山鸢尾 Iris-Versicolour 变色鸢尾 Iris-Virginica 维吉尼亚鸢尾 步骤1 用sklearn中的load_iris读取数据集,查看特征值的前两行和分类情况。 import numpy as np from sklearn import datasets from sklearn.cross_validation import train_test_split from sklearn.neighbors import KNeighborsClassifier iris =datasets.load_iris() iris_X=iris.data#特征值

Sklearn中的线性回归

痴心易碎 提交于 2019-11-25 19:03:49
import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression #假设样本数据集如下; data=[ [0.067732,3.176513],[0.427810,3.816464],[0.995731,4.550095],[0.738336,4.256571],[0.981083,4.560815], [0.526171,3.929515],[0.378887,3.526170],[0.033859,3.156393],[0.132791,3.110301],[0.138306,3.149813], [0.247809,3.476346],[0.648270,4.119688],[0.731209,4.282233],[0.236833,3.486582],[0.969788,4.655492], [0.607492,3.965162],[0.358622,3.514900],[0.147846,3.125947],[0.637820,4.094115],[0.230372,3.476039], [0.070237,3.210610],[0.067154,3.190612],[0.925577,4.631504],[0.717733,4