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

概述

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

线性回归

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)

线性回归实例

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

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')

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大学生计算机视觉学习DeepLearning

深度学习(二)神经网络中的卷积和反卷积原理

原文地址:https://www.cnblogs.com/DOMLX/p/9579392.html

1581
来自专栏Spark学习技巧

机器学习之学习率 Learning Rate

2622
来自专栏开心的学习之路

神经网络体系搭建(一)——神经网络

本篇是神经网络体系搭建的第一篇,解决体系搭建的前四个问题,详见神经网络体系搭建(序) 神经网络 ? 最简单的神经网络 神经网络的定义就不再赘述,直接从最简单的神...

33410
来自专栏CreateAMind

RCNN学习笔记(7):Faster R-CNN 英文论文翻译笔记

reference link:http://blog.csdn.net/liumaolincycle/article/details/48804687

3203
来自专栏磐创AI技术团队的专栏

新手入门机器学习十大算法

【磐创AI导读】:对于想要了解机器学习的新手,本文为大家总结了数据科学家最经常使用的十大机器学习算法来帮助大家快速入门。如果喜欢我们的文章,欢迎点赞、评论、转发...

851
来自专栏闪电gogogo的专栏

使用方向变换(directional transform)图像分块压缩感知

论文的思路是先介绍分块压缩感知BCS,然后介绍使用投影和硬阈值方法的迭代投影方法PL,接着将PL与维纳滤波器结合形成SPL(平滑PL),并且介绍了稀疏表示的几种...

39711
来自专栏计算机视觉战队

深度判别和共享特征学习的图像分类

秋雨思童年,落花念爱霖!一场秋雨的洗礼,让我们进入了真正能感觉得到的秋季。秋季是丰收的季节,不知朋友您收获如何?但是我相信您一定硕果累累,满载着各种成果、业绩和...

3457
来自专栏人工智能

吴恩达深度学习课程笔记之卷积神经网络基本操作详解

卷积层 CNN中卷积层的作用: CNN中的卷积层,在很多网络结构中会用conv来表示,也就是convolution的缩写。 卷积层在CNN中扮演着很重要的角色—...

3837
来自专栏决胜机器学习

机器学习(十二) ——神经网络代价函数、反向传播、梯度检验、随机初始化

机器学习(十二)——神经网络代价函数、反向传播、梯度检验、随机初始化 (原创内容,转载请注明来源,谢谢) 一、代价函数 同其他算法一样,为了获得最优化的神经网...

4054
来自专栏人工智能

ImageNet冠军带你入门计算机视觉:卷积神经网络

作者|360 董健 编辑|Vincent,Emily AI 前线导语:在第一篇文章《ImageNet 冠军带你入门计算机视觉:监督学习与神经网络的简单实现》中,...

3210

扫码关注云+社区

领取腾讯云代金券