线性回归

2.线性回归

☆樱花仙子☆ 提交于 2019-11-28 07:10:57
(一)简单线性回归 和之前介绍的KNN不同,KNN主要是解决分类问题,而线性回归顾名思义显然是用来解决回归问题的。线性回归具有如下特征: 解决回归问题 思想简单,实现容易 许多强大的非线性模型的基础,比如逻辑回归、多项式回归、svm等等 结果具有很好的可解释性 蕴含机器学习中的很多重要思想 图中是房屋的面积与价格之间的对应关系,不同的面积对应不同的价格,由此在二维平面中便形成了多个点。我们的目的就是要找到一条直线,最大程度上来拟合这些点。 但是在之前的KNN,分类问题中,横轴和纵轴都是样本的特征,而标签则是由这个点是红色还是蓝色决定的。 但是在线性回归中,由于是房产数据,我们必须要预测出一个具体的数值,而不能像分类问题那样,用简单的颜色来代表类别。而这些数据显然是在一个连续的样本空间中,因此需要一个坐标轴来表示。也正因为如此,在二维平面中只能有一个特征,要是多个特征,我们就要更高的维度上进行观察了。 如果样本的特征只有一个,我们称之为简单线性回归 我们的目的是要找到一个直线来尽可能多的拟合这些点,而在二维平面上显然是y = ax + b,那么每一个样本x,都会有一个真实值y和用拟合曲线预测出来的预测值ŷ,因此我们的真实值和预测值就会有一个差距 既然有真实值和预测值,那么评价一个直线的拟合程度,就看所有样本的真实值和预测值之差。如果只是简单的相减,那么两者之差可能有正有负,会抵消掉

线性回归模型的sklearn实现

本秂侑毒 提交于 2019-11-28 04:04:54
关于线性回归模型的知识总结,请参见 这里 。此处主要介绍线性模型的相关算法在sklearn中的实现: 一、线性回归(最小二乘法) from sklearn.linear_model import LinearRegression X, y = mglearn.datasets.make_wave(n_samples=60)#导入数据 X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42) lr = LinearRegression().fit(X_train, y_train)#拟合模型 print("lr.coef_: {}".format(lr.coef_))#输出系数(斜率) print("lr.intercept_: {}".format(lr.intercept_))#输出截距(偏移量) #准确率(模型效果) print("Training set score: {:.2f}".format(lr.score(X_train, y_train))) print("Test set score: {:.2f}".format(lr.score(X_test, y_test))) #用训练好的模型求新数据的值 lr.predict(X_test) 二、岭回归

回归评价指标MSE、RMSE、MAE、R-Squared

依然范特西╮ 提交于 2019-11-28 04:03:46
分类问题的评价指标是准确率,那么回归算法的评价指标就是MSE,RMSE,MAE、R-Squared。下面一一介绍 均方误差(MSE) MSE (Mean Squared Error)叫做均方误差。看公式 这里的y是测试集上的。 用 真实值-预测值 然后平方之后求和平均。 猛着看一下这个公式是不是觉得眼熟,这不就是线性回归的损失函数嘛!!! 对,在线性回归的时候我们的目的就是让这个损失函数最小。那么模型做出来了,我们把损失函数丢到测试集上去看看损失值不就好了嘛。简单直观暴力! 均方根误差(RMSE) RMSE(Root Mean Squard Error)均方根误差。 这不就是MSE开个根号么。有意义么?其实实质是一样的。只不过用于数据更好的描述。 例如:要做房价预测,每平方是万元(真贵),我们预测结果也是万元。那么差值的平方单位应该是 千万级别的。那我们不太好描述自己做的模型效果。怎么说呢?我们的模型误差是 多少千万?。。。。。。于是干脆就开个根号就好了。我们误差的结果就跟我们数据是一个级别的可,在描述模型的时候就说,我们模型的误差是多少万元。 MAE MAE(平均绝对误差) 不用解释了吧。 R Squared 上面的几种衡量标准针对不同的模型会有不同的值。比如说预测房价 那么误差单位就是万元。数子可能是3,4,5之类的。那么预测身高就可能是0.1,0.6之类的。没有什么可读性

sklearn+python:线性回归

为君一笑 提交于 2019-11-28 04:02:49
使用一阶线性方程预测波士顿房价 载入的数据是随sklearn一起发布的,来自boston 1993年之前收集的506个房屋的数据和价格。load_boston()用于载入数据。 from sklearn.datasets import load_boston from sklearn.model_selection import train_test_split import time from sklearn.linear_model import LinearRegression boston = load_boston() X = boston.data y = boston.target print( "X.shape:{}. y.shape:{}" .format(X.shape, y.shape)) print( 'boston.feature_name:{}' .format(boston.feature_names)) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size= 0.2 , random_state= 3 ) model = LinearRegression() start = time.clock() model.fit(X_train, y_train) train

机器学习实践(十二)—sklearn之线性回归

允我心安 提交于 2019-11-28 03:52:26
一、线性回归应用场景 房价预测 销售额度预测 金融:贷款额度预测、利用线性回归以及系数分析因子 二、线性回归的原理 什么是回归 在机器学习中,回归就是拟合的意思,我们需要找出一个模型来拟合(回归)数据。 什么是线性回归 线性回归是:利用回归方程(函数),对特征值和目标值之间关系进行建模的一种分析方式。 特征值和目标值可以是一个或多个,特征值和目标值可以看作函数意义上的自变量和因变量。 特点 只有一个自变量的情况称为单变量回归。 多于一个自变量的情况称为多元回归。 通用公式 h ( θ ) = θ 1 x 1 + θ 2 x 2 + θ 3 x 3 + . . . + b = θ T x + b h(\theta) = \theta_1x_1 + \theta_2x_2 + \theta_3x_3 + ... + b = \theta^Tx + b h ( θ ) = θ 1 ​ x 1 ​ + θ 2 ​ x 2 ​ + θ 3 ​ x 3 ​ + . . . + b = θ T x + b 其中: θ = ( θ 1 , θ 2 , . . . , θ n , b ) T \theta = (\theta_1,\theta_2,...,\theta_n,b)^T θ = ( θ 1 ​ , θ 2 ​ , . . . , θ n ​ , b ) T x = ( x 1 , x 2

2-4 线性回归的缺点

此生再无相见时 提交于 2019-11-27 22:05:10
文章目录 单项式缺点 构建单项式回归 单项式缺点 y = wx + b 这种单项式在数学模型中表示一根直线,但是生产环境中很多的数据例如股票,销售涨跌它都是曲线结构的,这就会导致单项式的线性回归预测率低 构建单项式回归 大家可以看到,单项式线性回归在可视化中生成的就是一条直线,直线的情况下预测曲线的真实数据是非常低的,因此一章节我们就来看如何采用多项式预测曲线数据 import numpy as np import matplotlib . pyplot as plt # 在指定[-3,3]随机生成size个随机数(代表的特征值) x = np . random . uniform ( - 3 , 3 , size = 100 ) print ( x , x . shape ) # 模拟目标值(y) 与x并不是简单的线性关系 y = 0.5 * x ** 2 + x + 2 + np . random . normal ( 0 , 1 , size = 100 ) plt . scatter ( x , y ) plt . show ( ) 来源: https://blog.csdn.net/lsqzedu/article/details/99756699

第4章 训练模型

半城伤御伤魂 提交于 2019-11-27 12:48:38
第4章 训练模型 写在前面 参考书 《机器学习实战——基于Scikit-Learn和TensorFlow》 工具 python3.5.1,Jupyter Notebook, Pycharm 线性回归算法比较 算法 m很大 是否支持核外 n很大 超参数 是否需要缩放 sklearn 标准方程 快 否 慢 0 否 LinearRegression 批量梯度下降 慢 否 快 2 是 n/a 随机梯度下降 快 是 快 ≥2 是 SGDRegressor 小批量梯度下降 快 是 快 ≥2 是 n/a 其中,m是训练实例的数量,n是特征数量。 多项式特征 from sklearn.preprocessing import PolynomialFeatures PolynomialFeatures会在给定的多项式阶数下,添加所有的特征组合 例如两个特征a,b,阶数degree=3,PolynomialFeatures不只会添加特征$a^2$、$a^3$、$b^2$、$b^3$,还会添加组合$ab$、$a^2b$、$ab^2$。 偏差/方差权衡 在统计学和机器学习领域,一个重要的理论结果是,模型的泛化误差可以被表示为三个截然不同的误差之和: 偏差:错误的假设(假设数据是线性的)。 方差:对数据的微小变化过度敏感(过拟合)。 不可避免的误差:噪声(通过清理数据来改善噪声)。 线性回归 普通线性回归

5.多项式回归与模型泛化

 ̄綄美尐妖づ 提交于 2019-11-27 03:59:11
(一)什么是多项式回归 还记得线性回归法吗?线性回归法有一个很大的局限性,那就是需要数据是有一定的线性关系的,但是现实中的很多数据是没有线性关系的。多项式就是用来解决这个问题的,可以处理非线性数据 在线性回归中,我们是假设数据具有线性关系的,因此我们在简单线性回归中,将直线的方向设置为y=ax+b的形式,那么我们求出a和b即可。 而对于有些数据,我们虽然也可以使用线性回归,但是显然具有更加强的非线性的关系,换句话说,如果我们用一个二次曲线来拟合这些点,效果会更好。因此函数就变成了了y=ax^2+bx+c,我们求出a、b、c即可。但是本质上,和线性回归一样,目前都是只有一个特征,只不过我们为样本多添加了一些特征,这些特征是原来的多项式项。求出了对原来的特征而言,一个非线性的曲线。 生成数据集 import numpy as np import matplotlib.pyplot as plt # 生成一百个样本,每个样本只有一个特征 X = np.random.uniform(-3, 3, size=(100, 1)) y = 0.5 * X ** 2 + X + 2 + np.random.normal(0, 1, size=(100,1)) plt.scatter(X, y) plt.show() 可以看到数据大概满足一条二次曲线,但是我们使用线性回归法来拟合一下 from

通俗易懂--逻辑回归算法讲解(算法+案例)

时光怂恿深爱的人放手 提交于 2019-11-26 21:49:57
标题 1.逻辑回归(Logistic Regression) 1.1逻辑回归与线性回归的关系 1.2损失函数 1.3多分类问题(one vs rest) 1.4逻辑回归(LR)的一些经验 1.5LR的应用 1.6Python代码实现 寻觅互联网,少有机器学习通俗易懂之算法讲解、案例等,项目立于这一问题之上,整理一份基本算法讲解+案例于文档,供大家学习之。通俗易懂之文章亦不可以面概全,但凡有不正确或争议之处,望告知,自当不吝赐教! GitHub地址(代码加数据) 1.逻辑回归(Logistic Regression) 1.1逻辑回归与线性回归的关系 逻辑回归是用来做分类算法的,大家都熟悉线性回归,一般形式是Y=aX+b,y的取值范围是[-∞, +∞],有这么多取值,怎么进行分类呢?不用担心,伟大的数学家已经为我们找到了一个方法。 首先我们先来看一个函数,这个函数叫做Sigmoid函数: 函数中t无论取什么值,其结果都在[0,-1]的区间内,回想一下,一个分类问题就有两种答案,一种是“是”,一种是“否”,那0对应着“否”,1对应着“是”,那又有人问了,你这不是[0,1]的区间吗,怎么会只有0和1呢?这个问题问得好,我们假设分类的阈值是0.5,那么超过0.5的归为1分类,低于0.5的归为0分类,阈值是可以自己设定的。 好了,接下来我们把aX+b带入t中就得到了我们的逻辑回归的一般模型方程