前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >机器学习常用算法-线性回归算法

机器学习常用算法-线性回归算法

作者头像
吕海峰
发布于 2018-06-13 03:21:13
发布于 2018-06-13 03:21:13
71100
代码可运行
举报
文章被收录于专栏:BrianBrian
运行总次数:0
代码可运行

概述

有时候我们需要预测连续值的映射关系,比如房价预测问题。不想之前的是几个类别,它的输出值是实数。这个时候一般通过线性回归算法进行拟合。

线性回归

h_\theta(x)=\theta_0+\theta_1x

上面这个例子是针对数据集x和y,预测函数根据数据输入x会预测出h(x),我们的目的是找出一个合适θ参数值,是的预测值h(x)和y值的整体误差最小。我们一般通过均方差成本函数来衡量模型对训练样本拟合的好坏程度。如下:

J(\theta)=J(\theta_0,\theta_1)=\frac 1{2m}\sum_{i=1}^m(h(x^{(i)})-y^{(i)})^2

为了使得我们成本函数最小化,进而转化成了数学上的最优化求解问题。我们需要找到合适θ,使得成本函数最小化。我们一般通过梯度下降算法来解决该问题。可以理解为找到一个全局最优解,一般数学上的最优解是通过导数的变化率来找到全局最优解,梯度下降算法是通过迭代的方式不断地沿着下降最快的方向进行寻找最优解。即:

\theta(j)=\theta(i)- \alpha\frac{\partial}{\partial\theta_i}J(\theta)

线性回归实例

我这边通过深度学习和机器学习来看两个实例。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import tensorflow as tf
import numpy as np
import mxnet as mx
from mxnet import gluon
from mxnet import ndarray as nd
from matplotlib import pyplot as plt
from numpy import genfromtxt
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
import logging
%matplotlib inline
logging.getLogger().setLevel(logging.DEBUG)


def pre_boston_data():
    '''准备boston的数据,构造训练数据集'''
    boston = load_boston()
    features = np.array(boston.data)
    lables = np.array(boston.target)
    return features,lables
	
def normalizer(dataset):
    '''对数据进行归一化'''
    mean = np.mean(dataset,axis=0)
    std = np.std(dataset,axis=0)
    return (dataset-mean)/std
	
def bias_vector(features,lables):
	'''规范合理化数据集'''
    n_training_samples = features.shape[0]
    n_dim = features.shape[1]
    ones = np.ones(n_training_samples)
    combine = np.c_[ones,features]
    f=np.reshape(combine,[n_training_samples,n_dim+1])
    l=np.reshape(labels,[n_training_samples,1])
    return f,l

#数据预处理和规范化数据集
features,labels = pre_boston_data()
normolized_feature = normalizer(features)
data,label = bias_vector(normolized_feature,labels)
train_x,test_x,train_y,test_y = train_test_split(data,label,test_size = 0.25,random_state = 100)
n_dim = train_x.shape[1]
#开始训练数据集和构造模型算法
learning_rate = 0.01
training_epochs = 1000
log_loss = np.empty(shape=[1],dtype=float)
X = tf.placeholder(tf.float32,[None,n_dim]) 
Y = tf.placeholder(tf.float32,[None,1]) 
W = tf.Variable(tf.ones([n_dim,1]))
y_ = tf.matmul(X, W)
cost_op = tf.reduce_mean(tf.square(y_ - Y))
training_step = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost_op)
with tf.Session(config=tf.ConfigProto(log_device_placement=True)) as sess:
    sess.run(tf.global_variables_initializer())
    for epoch in range(training_epochs):
        sess.run(training_step,feed_dict={X:train_x,Y:train_y})
        log_loss = np.append(log_loss,sess.run(cost_op,feed_dict={X: train_x,Y: train_y}))
        pred_y = sess.run(y_, feed_dict={X: test_x})
        mse = tf.reduce_mean(tf.square(pred_y-test_y))
    fig, ax = plt.subplots()
    ax.scatter(test_y, pred_y)
    ax.plot([test_y.min(), test_y.max()], [test_y.min(), test_y.max()], 'k--', lw=3)
    ax.set_xlabel('Measured')
    ax.set_ylabel('Predicted')

最终我们的结果如下图所示:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-03-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
TensorFlow HOWTO 1.2 LASSO、岭和 Elastic Net
L1=λ1∥w∥1L2=λ2∥w∥2L=LMSE+L1+L2\begin{matrix} L_1 = \lambda_1 \|w\|_1 \\ L_2 = \lambda_2 \|w\|^2 \\ L = L_{MSE} + L_1 + L_2 \end{matrix}L1​=λ1​∥w∥1​L2​=λ2​∥w∥2L=LMSE​+L1​+L2​​
ApacheCN_飞龙
2019/02/15
5370
TensorFlow HOWTO 1.2 LASSO、岭和 Elastic Net
【TensorFlow】TensorFlow的线性回归
该文章讲述了作者在使用TensorFlow时遇到的一个训练速度慢、难以收敛的问题,并分析了出现问题的可能原因。作者通过更改学习率、优化算法等调整,最终成功解决了该问题。
Alan Lee
2018/01/02
1.5K0
【TensorFlow】TensorFlow的线性回归
使用tensorflow搭建线性回归模型
上一阶段的数据分析学习因为工作原因耽误了,今天忙里偷个闲,重新开始了。 @猴子 求个第二关门票。
带萝卜
2020/10/26
1K0
使用tensorflow搭建线性回归模型
机器学习算法(二)之线性回归算法代码
由于线性回归的代码很常见,因此本次使用TensorFlow深度学习框架进行线性回归的计算
千与编程
2023/04/28
2860
机器学习算法(二)之线性回归算法代码
一看就懂的Tensorflow实战(线性回归模型)
在这里,我们仅仅讨论单变量的线型回归模型。不对回归算法进行过多的展开。重点放在Tensorflow的学习上。 下图展示的分别是:单变量线性回归模型的公式;学习的参数;损失函数(采用的均方误差);目标函数的优化求解(SGD)。
AI异构
2020/07/29
1.3K0
一看就懂的Tensorflow实战(线性回归模型)
TensorFlow-GPU线性回归可视化代码,以及问题总结
通过TensorBoard将TensorFlow模型的训练过程进行可视化的展示出来,将训练的损失值随迭代次数的变化情况,以及神经网络的内部结构展示出来,以此更好的了解神经网络。
andrew_a
2019/07/30
7910
TensorFlow-GPU线性回归可视化代码,以及问题总结
[机智的机器在学习] 利用TensorFlow实现多元线性回归分类器
从今天的推文开始,我打算把经典的机器学习算法,都用tf实现一遍。这样一来可以熟悉一下机器学习算法,二来可以对tf有比较好的掌握,如果你是新手,那就跟着我的节奏,一起学习吧。讲的不好,大神轻拍~。 为了节省时间,有兴趣的童鞋可以直接去Github上clone,使用~,欢迎来点star~。 Github 地址: https://github.com/Alvin2580du/machine_learning_with_tensorflow.git # 导入需要的模块 # - * - coding: utf-8 -
用户1622570
2018/04/12
1.2K0
不怕学不会 使用TensorFlow从零开始构建卷积神经网络
人们可以使用TensorFlow的所有高级工具如tf.contrib.learn和Keras,能够用少量代码轻易的建立一个卷积神经网络。但是通常在这种高级应用中,你不能访问代码中的部分内容,对深层次的原理缺乏理解。 在本教程中,我将介绍如何从零开始使用底层的TensorFlow构建卷积神经网络,并使用TensorBoard可视化我们的函数图像和网络性能。本教程需要你了解神经网络的一些基础知识。在整篇文章中,我还将把卷积神经网络的每一步都分解为绝对的基础知识,以便你可以充分理解图中每一步发生的情况。通过从头开
AiTechYun
2018/03/05
1.2K0
不怕学不会 使用TensorFlow从零开始构建卷积神经网络
TensorFlow HOWTO 1.1 线性回归
导入数据,并进行预处理。我们使用鸢尾花数据集中的后两个品种,根据萼片长度预测花瓣长度。
ApacheCN_飞龙
2019/02/15
4850
TensorFlow HOWTO 1.1 线性回归
[编程经验] TensorFlow实现线性支持向量机SVM
[点击蓝字,一键关注~] 今天要说的是线性可分情况下的支持向量机的实现,如果对于平面内的点,支持向量机的目的是找到一条直线,把训练样本分开,使得直线到两个样本的距离相等,如果是高维空间,就是一个超平面
用户1622570
2018/04/11
1.4K0
[编程经验] TensorFlow实现线性支持向量机SVM
TensorFlow线性回归与逻辑回归实战
Huber loss是为了增强平方误差损失函数(squared loss function)对噪声(或叫离群点,outliers)的鲁棒性提出的。
公众号guangcity
2019/09/20
1.6K0
TensorFlow线性回归与逻辑回归实战
这些优质Python项目已分成初、中、高级,你想学习哪个(附代码)
导读:本文介绍了三种不同的阶段去开发Python项目,旨在提供适合各种难度层次Python项目。
IT阅读排行榜
2019/05/16
1.2K0
这些优质Python项目已分成初、中、高级,你想学习哪个(附代码)
深度学习(3)——用tensorflow实现机器学习算法1实现线性回归实现逻辑回归
前言:主要用TensorFlow实现线性回归和逻辑回归这两个机器学习算法,就当对TensorFlow的一个应用了吧 1实现线性回归 直接上代码吧,注释和步骤直接在代码里面了 # 1. 构造一个数据 np.random.seed(28) N = 100 x = np.linspace(0, 6, N) + np.random.normal(loc=0.0, scale=2, size=N) y = 14 * x - 7 + np.random.normal(loc=0.0, scale=5.0, size=N
DC童生
2018/07/04
6110
线性回归
版权声明:本文为博主原创文章,欢迎转载。 https://blog.csdn.net/chengyuqiang/article/details/88824639
程裕强
2019/07/01
4920
线性回归
tf12: 判断男声女声
MachineLP
2018/01/09
9210
【TensorFlow篇】--Tensorflow框架初始,实现机器学习中多元线性回归
TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。
LhWorld哥陪你聊算法
2018/09/13
6280
【TensorFlow篇】--Tensorflow框架初始,实现机器学习中多元线性回归
深度学习入门实战(二):用TensorFlow训练线性回归
该文章介绍了如何通过Python和Keras框架实现一个简单的深度学习模型,并使用该模型对MNIST数据集进行分类。首先,介绍了Keras是什么以及它的主要特点,然后详细讲解了如何利用Keras实现一个简单的深度学习模型。最后,通过实例演示了如何使用该模型对MNIST数据集进行分类。
serena
2017/04/19
8K2
tensorflow机器学习模型的跨平台上线
    在用PMML实现机器学习模型的跨平台上线中,我们讨论了使用PMML文件来实现跨平台模型上线的方法,这个方法当然也适用于tensorflow生成的模型,但是由于tensorflow模型往往较大,使用无法优化的PMML文件大多数时候很笨拙,因此本文我们专门讨论下tensorflow机器学习模型的跨平台上线的方法。
刘建平Pinard
2018/08/07
1.3K0
基于Tensorflow的神经网络解决用户流失概率问题
前言 用户流失一直都是公司非常重视的一个问题,也是AAARR中的Retention的核心问题,所以各大算法竞赛都很关注。比如最近的:KKBOX的会员流失预测算法竞赛(https://www.kaggle.com/c/kkbox-churn-prediction-challenge),如何能够搭建一个精准的模型成了大家探索的重要问题。 本文主要讲解神经网络、TensorFlow的概述、如何利用python基于TensorFlow神经网络对流失用户进行分类预测,及可能存在的一些常见问题,作为深度学习的入门阅
用户1332428
2018/03/09
1.8K0
基于Tensorflow的神经网络解决用户流失概率问题
tensorflow之线性回归
定义输入变量x,输出变量y;初始化线性回归中的参数:w,b;根据公式给出预测结果,计算误差,使用梯度下降优化;不断的训练,直到达到最大的训练次数(或考虑达到最小的误差要求),结束训练,输出最终的结果;
用户7886150
2021/01/09
5680
推荐阅读
相关推荐
TensorFlow HOWTO 1.2 LASSO、岭和 Elastic Net
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验