精华内容
下载资源
问答
  • 主要介绍了Python利用神经网络解决非线性回归问题,结合实例形式详细分析了Python使用神经网络解决非线性回归问题的相关原理与实现技巧,需要的朋友可以参考下
  • 主要介绍了Python利用逻辑回归模型解决MNIST手写数字识别问题,结合实例形式详细分析了Python MNIST手写识别问题原理及逻辑回归模型解决MNIST手写识别问题相关操作技巧,需要的朋友可以参考下
  • 主成分回归分析.sas

    2020-08-18 17:57:30
    利用SAS先对原始数据做主成分分析降维,然后根据降维后的特征向量构建多重线性回归模型,该方法通常用来解决多重线性回归模型在构建时,自变量的多重共线性问题
  • Eviews笔记-回归分析【自用】

    万次阅读 多人点赞 2019-05-28 21:16:03
    本次使用的软件是Eviews10.0,解决的是分年度回归和非平衡样本回归两个问题。 一、分年度回归 导入数据: 选择File-Open-Foreign Data as Workfile 本文研究的是股权性质、金字塔股权结构与会计稳健性的关系。 ...

    本次使用的软件是Eviews10.0,解决的是分年度回归和非平衡样本回归两个问题。
    一、分年度回归

    1. 导入数据:
      选择File-Open-Foreign Data as Workfile
      在这里插入图片描述
      本文研究的是股权性质、金字塔股权结构与会计稳健性的关系。
      设置行业虚拟变量时,因为有6个行业分类,设置五个行业哑变量,ind1~ind5,如果该公司属于该行业,就取1,否则取0。同理在非平衡样本回归时设置年度哑变量。导入过程如下,不进行任何改动,直接点下一步:
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      导入之后得到下图:
      在这里插入图片描述
    2. 打开数据:
      利用shift选择打开所有数据,然后移除number和resid才能进行回归分析(为何会存在和resid待解答?)。在这里插入图片描述
      在这里插入图片描述
      3.进行回归
      方法一:在group的菜单选择make equation。

    在这里插入图片描述
    在弹出来的面板里输入,第一个输入的为被解释变量,c为常数,类似ret*dr的为交互项,与设定的模型有关。这次选择的方法为LS普通最小回归法。样本数为1708个。
    在这里插入图片描述
    得到最终的结果如下,可以进行下一步分析。其中coefficient是回归系数,prob.为显著性水平,一般与1%,5%和10%进行比较,当小于这些数时,说明在1%,5%和10%的水平下显著。
    在这里插入图片描述
    方法二:在command里输入“ls 被解释变量、解释变量、c”,也可以得到相同回归结果。
    在这里插入图片描述
    二、非平衡样本回归
    这里非平衡样本数量是指不同年度的样本数不一致。本文研究的样本中不同年度的上市公司数量不一致。着重就导入方法进行说明,后续回归分析步骤与分年度样本回归步骤一致。

    1. 先对excel表进行处理,股票代码按升序排列,如下图所示。
      在这里插入图片描述

    2. 新建workfile
      在这里插入图片描述

    3. 在弹出来的窗口中更改结构类型workfile structure type为“Unstructured/Undated ”,在右侧Observations将全样本总数输入。
      在这里插入图片描述
      3.通过Object-New Object,新建code和year两个系列。这里的code表示上市公司股票代码。在这里插入图片描述
      新建的类型选择Series,并给其命名。
      在这里插入图片描述

    4. 打开year和code两个系列,将这两列数据从excel复制粘贴到group中。
      在这里插入图片描述

    5. 点击菜单栏的range,将Workfile structure type改成“dated panel”,在左侧两个框分别输入code和year,在右下方取消balance between starts&end,如果不取消打勾,系统还是会为按每年度样本数相同来填充数据。
      在这里插入图片描述

    6. 上一步结束后,出现新的系列dateid,再打开这些系列时,可以看到第一列变成了2-12的类型。
      在这里插入图片描述

    7. 可在command里增加系列,运用“data 变量 变量…”,也可以Object-New Object,加入其他变量。
      在这里插入图片描述
      至此,非平衡样本数据导入完毕,后续回归分析与分年度样本回归处理一致。

    展开全文
  • 主成分回归分析是将回归模型中有严重复共线性的变量进行因子提取,得到...通过具体实例介绍复共线性的判别方法以及如何利用主成分回归分析方法建立较理想的回归模型,从而解决了由于复共线性而造成病态回归方程的问题
  • 利用曲线回归解决实际问题,让你马上学会回归的知识。
  • 以上是BP神经网络的相关介绍,BP神经网络适用于大样本数据的预测,至于小样本还有灰色理论、最小二乘支持向量机、广义回归神经网络、灰色神经网络,不同的数据需要根据其自身特点选择不同的预测方法。在很多次实验...

    BP神经网络:是1986年由Rumelhart和McClelland为首的科学家提出的概念,是一种按照误差逆向传播算法训练的多层前馈神经网络,是目前应用最广泛的神经网络。神经网络是把生活中的常见情节推广到计算仿真的范畴,这样的启发式算法还有许多,例如:遗传算法、烟花算法、蚁群算法、模拟退火算法等等。

    一、神经网络算法步骤

    1、导入需要处理的数据,随机获取实验数据和目标数据。

    2、构建训练网络,函数:newwff。

    3、对网络训练,函数:train。

    4、仿真操作,函数:sin(net,x)。

    5、评价。

    6、模拟训练的效果可视化。

    在神经网络训练中,我们构建神经网络的实验数据和目标收敛数据都是从原始数据中随机获取的。

    二、神经网络学习主要函数说明

    1. newff:前馈网络创建函数
      函数结构:net = newff(A,B,{C},’trainFun’,’BLF’,’PF’)。
      参数:
      A:一个n*2的矩阵,第i行元素为输入信号Xi的最大最小值;
      B:一个K维行向量,其元素为网络中各个节点的数量;
      C:一个K维字符串行向量,每一个分量为对应层的神经元的激活函数,默认为“tansig”;
      trainFun:为学习规则的采用的训练算法。默认为:“trainlm”;
      BLF:BP权值/偏差学习函数。默认为:“learngdm”;
      PF:性能函数,默认为“mse”;

    2. train函数
      函数结构
      网络学习函数:[net,tr,YI,E] = train(net,X,Y) 。
      参数:
      X:网络实际输入;
      Y:网络应有输出;
      tr:网络跟踪信息;
      YI:网络实际输出;
      E:误差矩阵。

    3. sim函数
      函数结构:Y = sim(net,X) 。
      参数
      X:输入给网络的KN矩阵,K为网络输入个数,N为样本数据量;
      Y:输出矩阵Q
      N,其中Q为网络输出个数。

    三、案例

    1.案例1

    利用三层BP神经网络来完成非线性函数的逼近任务,其中隐层神经元个数为五个。

    clear; clc;
    
    X=-1:0.1:1;
    
    D=[-0.9602 -0.5770 -0.0729 0.3771 0.6405 0.6600 0.4609...
    
        0.1336 -0.2013 -0.4344
    -0.5000 -0.3930 -0.1647 -.0988...
    
        0.3072 0.3960 0.3449
    0.1816 -0.312 -0.2189 -0.3201];
    
    net=newff([-1,1],[5,1],{'tansig','tansig'});%初始网络
    
    net.trainParam.epochs=1000;%最大训练次数
    
    net.trainParam.goal=0.005;%训练要求精度
    
    net=train(net,X,D);%网络训练
    
    figure
    
    plot(X,D,'*',X,Y); %绘制实际曲线点和预测曲线
    
    % 利用得到的神经网络和数据仿真预测
    
    Y=sim(net,X)  %Y为预测结果
    

    在这里插入图片描述

    2.案例2

    clear;clc;
    
    P=[-1 -1 2 2 4;0
    5 0 5 7];
    
    T=[-1 -1 1 1
    -1];
    
    % 样本数据归一化处理
    
    [input_n,input_ps]=mapminmax(P);
    
    [output_n,output_ps]=mapminmax(T);
    
    % 初始化网络结果(利用minmax函数求输入样本范围)
    
    net=newff(input_n,output_n,[5,1]);%三个数据为输入样本数据,输出样本数据和隐含层节点数
    
    %设置参数
    
    net.trainParam.show=50;
    
    net.trainParam.lr=0.05;
    
    net.trainParam.epochs=300;
    
    net.trainParam.goal=0.005;
    
    %网络训练
    
    [net,tr]=train(net,P,T);
    
    %利用得到的神经网络和数据仿真预测
    
    Y=sim(net,P)%Y为预测结果
    

    在这里插入图片描述
    以上是BP神经网络的相关介绍,BP神经网络适用于大样本数据的预测,至于小样本还有灰色理论、最小二乘支持向量机、广义回归神经网络、灰色神经网络,不同的数据需要根据其自身特点选择不同的预测方法。在很多次实验之后,我比较钟情于BP神经网络和组合预测,组合预测是大趋势,客观上有道理,主观上有更大的操作可能性。
    下面给出广义回归神经网络(包含交叉验证过程的GRNN)用于小样本量预测的代码,包括BP神经网络预测结果的对比。
    GRNN预测,BP对比

    展开全文
  • 1、MNIST手写识别问题 MNIST手写数字识别问题:输入黑白的手写阿拉伯数字,通过机器学习判断输入的是几。可以通过TensorFLow下载MNIST手写数据集,通过import引入MNIST数据集并进行读取,会自动从网上下载所需文件...

    1、MNIST手写识别问题

    MNIST手写数字识别问题:输入黑白的手写阿拉伯数字,通过机器学习判断输入的是几。可以通过TensorFLow下载MNIST手写数据集,通过import引入MNIST数据集并进行读取,会自动从网上下载所需文件。

    %matplotlib inline
    import tensorflow as tf
    import tensorflow.examples.tutorials.mnist.input_data as input_data
    mnist=input_data.read_data_sets('MNIST_data/',one_hot=True)
    import matplotlib.pyplot as plt
    
    def plot_image(image):                                #图片显示函数
        plt.imshow(image.reshape(28,28),cmap='binary')
        plt.show()
    
    print("训练集数量:",mnist.train.num_examples,
         "特征值组成:",mnist.train.images.shape,
         "标签组成:",mnist.train.labels.shape)
    
    batch_images,batch_labels=mnist.train.next_batch(batch_size=10)    #批量读取数据
    print(batch_images.shape,batch_labels.shape)
    
    print('标签值:',np.argmax(mnist.train.labels[1000]),end=' ')    #np.argmax()得到实际值
    print('独热编码表示:',mnist.train.labels[1000])
    plot_image(mnist.train.images[1000])                 #显示数据集中第1000张图片

       

    输出训练集 的数量有55000个,并打印特征值的shape为(55000,784),其中784代表每张图片由28*28个像素点组成,由于是黑白图片,每个像素点只有黑白单通道,即通过784个数可以描述一张图片的特征值。可以将图片在Jupyter中输出,将784个特征值reshape为28×28的二维数组,传给plt.imshow()函数,之后再通过show()输出。

    MNIST提供next_batch()方法用于批量读取数据集,例如上面批量读取10个对应的images与labels数据并分别返回。该方法会按顺序一直往后读取,直到结束后会自动打乱数据,重新继续读取。

    在打开mnist数据集时,第二个参数设置one_hot,表示采用独热编码方式打开。独热编码是一种稀疏向量,其中一个元素为1,其他元素均为0,常用于表示有限个可能的组合情况。例如数字6的独热编码为第7个分量为1,其他为0的数组。可以通过np.argmax()函数返回数组最大值的下标,即独热编码表示的实际数字。通过独热编码可以将离散特征的某个取值对应欧氏空间的某个点,有利于机器学习中特征之间的距离计算

    数据集的划分,一种划分为训练集用于模型的训练,测试集用于结果的测试,要求集合数量足够大,而且具有代表性。但是在多次执行后,会导致模型向测试集数据进行拟合,从而导致测试集数据失去了测试的效果。因此将数据集进一步划分为训练集、验证集、测试集,将训练后的模型用验证集验证,当多次迭代结束之后再拿测试集去测试。MNIST数据集中的训练集为mnist.train,验证集为mnist.validation,测试集为mnist.test

    2、逻辑回归

    与线性回归相对比,房价预测是根据多个输入参数x与对应权重w相乘再加上b得到线性的输出房价。而还有许多问题的输出是非线性的、控制在[0,1]之间的,比如判断邮件是否为垃圾邮件,手写数字为0~9等,逻辑回归就是用于处理此类问题。例如电子邮件分类器输出0.8,表示该邮件为垃圾邮件的概率是0.8.

    逻辑回归通过Sigmoid函数保证输出的值在[0,1]之间,该函数可以将全体实数映射到[0,1],从而将线性的输出转换为[0,1]的数。其定义与图像如下:

                 

    在逻辑回归中如果采用均方差的损失函数,带入sigmoid会得到一个非凸函数,这类函数会有多个极小值,采用梯度下降法便无法求得最优解。因此在逻辑回归中采用对数损失函数,其中y是特征值x的标签,y'是预测值。

    在手写数字识别中,通过单层神经元产生连续的输出值y,将y再输入到softmax层处理,经过函数计算将结果映射为0~9每个数字对应的概率,概率越大表示该图片越像某个数字,所有数字的概率之和为1

    交叉熵损失函数:交叉熵用于刻画两个概率分布之间的距离,其中p代表正确答案,q代表预测值,交叉熵越小距离越近,从而模型的预测越准确。例如正确答案为(1,0,0),甲模型预测为(0.5,0.2,0.3),其交叉熵=-1*log0.5≈0.3,乙模型(0.7,0.1,0.2),其交叉熵=-1*log0.7≈0.15,所以乙模型预测更准确

    模型的训练

    首先定义二维浮点数占位符x、y,以及二维参数变量W、b并随机赋初值。之后定义前向计算为向量x与W对应叉乘再加b,并将得到的线性结果经过softmax处理得到独热编码预测值。

    之后定义准确率accuracy,其值为预测值pred与真实值y相等个数来衡量

    接下来初始化变量、设置超参数,并定义损失函数、优化器,之后开始训练。每轮训练中分批次读取数据进行训练,每轮训练结束后输出损失与准确率。

    import numpy as np
    import tensorflow as tf
    import tensorflow.examples.tutorials.mnist.input_data as input_data
    mnist=input_data.read_data_sets('MNIST_data/',one_hot=True)
    import matplotlib.pyplot as plt
    
    #定义占位符、变量、前向计算
    x=tf.placeholder(tf.float32,[None,784],name='x')
    y=tf.placeholder(tf.float32,[None,10],name='y')
    W=tf.Variable(tf.random_normal([784,10]),name='W')
    b=tf.Variable(tf.zeros([10]),name='b')
    forward=tf.matmul(x,W)+b
    pred=tf.nn.softmax(forward)                             #通过softmax将线性结果分类处理
    
    #计算预测值与真实值的匹配个数
    correct_prediction=tf.equal(tf.argmax(pred,1),tf.argmax(y,1))
    #将上一步得到的布尔值转换为浮点数,并求平均值,得到准确率
    accuracy=tf.reduce_mean(tf.cast(correct_prediction,tf.float32))
    
    ss=tf.Session()
    init=tf.global_variables_initializer()
    ss.run(init)
    
    #超参数设置
    train_epochs=50
    batch_size=100                                                #每个批次的样本数
    batch_num=int(mnist.train.num_examples/batch_size)            #一轮需要训练多少批
    learning_rate=0.01
    
    #定义交叉熵损失函数、梯度下降优化器
    loss_function=tf.reduce_mean(-tf.reduce_sum(y*tf.log(pred),reduction_indices=1))  
    optimizer=tf.train.GradientDescentOptimizer(learning_rate).minimize(loss_function)
    
    for epoch in range(train_epochs):
        for batch in range(batch_num):                            #分批次读取数据进行训练
            xs,ys=mnist.train.next_batch(batch_size)
            ss.run(optimizer,feed_dict={x:xs,y:ys})
        #每轮训练结束后通过带入验证集的数据,检测模型的损失与准去率 
        loss,acc=ss.run([loss_function,accuracy],\
                        feed_dict={x:mnist.validation.images,y:mnist.validation.labels})
        print('第%2d轮训练:损失为:%9f,准确率:%.4f'%(epoch+1,loss,acc))

    从每轮训练结果可以看出损失在逐渐下降,准确率在逐步上升。

    结果预测

    使用训练好的模型对测试集中的数据进行预测,即将mnist.test.images数据带入去求pred的值。

    为了使结果更便于显示,可以借助plot函数库将图片数据显示出来,并配以文字label与predic的值。首先通过plt.gcf()得到一副图像资源并设置其大小。再通过plt.subplot(5,5,index+1)函数将其划分为5×5个子图,遍历第index+1个子图,分别将图像资源绘制到子图,通过set_title()设置每个子图的title显示内容。子图绘制结束后显示整个图片,并调用函数传入图片、标签、预测值等参数。

    prediction=ss.run(tf.argmax(pred,1),feed_dict={x:mnist.test.images})
    
    def show_result(images,labels,prediction,index,num=10):     #绘制图形显示预测结果
        pic=plt.gcf()                                           #获取当前图像
        pic.set_size_inches(10,12)                              #设置图片大小
        for i in range(0,num):
            sub_pic=plt.subplot(5,5,i+1)                        #获取第i个子图
            #将第index个images信息显示到子图上
            sub_pic.imshow(np.reshape(images[index],(28,28)),cmap='binary') 
            title="label:"+str(np.argmax(labels[index]))        #设置子图的title内容
            if len(prediction)>0:
                title+=",predict:"+str(prediction[index])
                
            sub_pic.set_title(title,fontsize=10)
            sub_pic.set_xticks([])                              #设置x、y坐标轴不显示
            sub_pic.set_yticks([])
            index+=1
        plt.show()
    show_result(mnist.test.images,mnist.test.labels,prediction,10)

    运行结果如下,可以看到预测的结果大多准确

     

     

     

    展开全文
  • 利用R进行多元线性回归分析

    千次阅读 2018-03-07 20:15:12
    利用R进行多元线性回归分析对于一个因变量y,n个自变量x1,...,xn,要如何判断y与这n个自变量之间是否存在线性关系呢?肯定是要利用他们的数据集,假设数据集中有m个样本,那么,每个样本都分别对应着一个因变量和一...

    利用R进行多元线性回归分析

    对于一个因变量y,n个自变量x1,...,xn,要如何判断y与这n个自变量之间是否存在线性关系呢?

    肯定是要利用他们的数据集,假设数据集中有m个样本,那么,每个样本都分别对应着一个因变量和一个n维的自变量;

    m个样本,就对应着一个m维的列向量Y,一个m×n维的矩阵X

    Y是X的每一列X1,...,Xn的函数


    那么,Y与X1,...,Xn之间到底是什么关系呢?是满足Y=a1*X1+...+an*Xn这样的线性关系还是Y=f(X1,...,Xn)这样的非线性关系呢?

    为了解决这个问题,可以首先利用多元线性回归

    展开全文
  • 利用神经网络解决非线性回归问题

    千次阅读 2018-12-15 15:59:09
    现在我们通常使用神经网络进行分类,但是有时我们也会进行回归分析。 如本文的问题: 我们知道一个生物体内的原始有毒物质的量,然后对这个生物体进行治疗,向其体内注射一个物质,过一段时间后重新测量这个生物体内...
  • 回归分析是数据分析中最基础也是最重要的分析工具,绝大多数的数据分析问题,都可以使用回归的思想来解决回归分析的任务: 通过研究自变量X和因变量Y的相关关系,尝试去解释Y的形成机制,进而达到通过X去预测Y的...
  • 在统计学上面,利用回归分析我们可以拟合出直线或者曲线判定两个变量之间存在什么关系。拟合的好坏我们就可以用可决系数去判定,这样使得回归分析达到有理有据。
  • Ridge回归、LASSO回归、Elastic Net弹性网络解决过拟合问题 1.如果仅是在测试集数据集上存在该问题–> 过拟合 如果模型在训练集上的效果不错,但是在测试集上的效果非常差,在这种情况下,认为模型存在过拟合。 ...
  • 回归问题一般解决方法

    千次阅读 2018-02-05 19:12:31
    1. 回归问题 Given a labeled training set learn a general mapping which associates previously unseen independent test data with their correct continuous prediction. 回归问题和分类问题很相似,区别...
  • 目录 神经网络模型简述 ...常用的货运量预测方法包括时间序列方法、移动平滑法、指数平滑和随机时间序列方法、相关(回归)分析法、灰色预测方法和作为多种方法综合的组合预测方法等.这些方法大都集中在对...
  • 水泥凝固时放出的热量y与水泥种4种化学成份x1、x2、x3、x4有关,今测得一组数据如下,试通过逐步回归确定最优的线性模型。 第一题的操作是: 把相应数据改成 然后在R软件中读取数据 使用完全随机设计模型方差...
  • 数学建模之回归分析

    千次阅读 多人点赞 2019-08-26 16:54:59
    数学建模之回归分析
  • 线性回归分析(python3) 1、python固定导入的包 # 工具:python3 #固定导入 import numpy as np #科学计算基础库,多维数组对象ndarray import pandas as pd #数据处理库,DataFrame(二维数组) import ...
  • 线性回归

    万次阅读 多人点赞 2016-06-03 10:22:43
    线性回归模型的基本特性就是:模型是参数的线性函数。最简单的线性回归模型当然是模型是参数的线性函数的同时,也是输入变量的线性函数,或者叫做线性组合。如果我们想要获得更为强大的线性模型,
  • 逻辑回归算法原理及用于解决多分类问题 逻辑回归算法又叫做对数几率回归,作为一种分类算法,在统计学中属于广义的线性模型。实际上逻辑回归是通过对数几率函数将线性函数的结果进行mapping,这样一来目标函数的取值...
  • 7.1 单因素方差分析 7.1.1 方差分析概念 7.1.2 单因素方差分析的数据结构 例7.1.1三种治疗方案对降血糖的疗效比较 7.1.3 单因素方差分析模型 7.2 双因素方差分析 7.2.2 双因素方差分析的数据结构 ...多元线性回归分析
  • 接着上一篇博文《机器学习人工智能算法——支持向量机(Support Vector Machine, SVM)》的内容,我们来聊一聊如何使用SVM的思想解决回归问题。  回归问题的本质其实就是找到一根直线也好曲线也好,能够最佳程度...
  • 如何使用python来进行回归分析

    千次阅读 多人点赞 2020-04-16 10:18:44
    文章主要介绍两种常见的回归分析方法,以及其对应的Python实现操作。 目录: 什么是回归分析 为什么使用回归分析 回归分析技术有哪些 使用Python实现回归分析 什么是回归分析 在统计学中,回归分析(regression ...
  • 多元回归分析(线性回归)

    千次阅读 2020-08-13 18:14:30
    多元线性回归分析一、回归的基本理解(1)回归的基本任务(2)回归里的关键词(3)回归里的数据类型(4)回归方程中的系数解释(5)核心解释变量和控制变量(6)特殊的自变量:虚拟变量X二、例题:电商平台的奶粉...
  • 《MATLAB神经网络30个案例分析》学习笔记

    万次阅读 多人点赞 2016-09-04 20:53:31
    《MATLAB神经网络30个案例分析》学习记录(待更新):1. 数据分类,分类——多个输出,向量表示 [1 0 0] [0 1 0] [0 0 1]这样2. 分线性系统建模,拟合参数,用一定量的输入输出数据训练神经网络即可3. 遗传算法...
  • 回归问题的条件/前提: 1) 收集的数据 2) 假设的模型,即一个函数,这个函数里含有未知的参数,通过学习,可以估计出参数。然后利用这个模型去预测/分类新的数据。 1. 线性回归 假设 特征 和 ...
  • 数据分析之回归分析

    千次阅读 2019-08-08 08:17:03
    回归,最初是遗传学中的一个名词,是由生物学家兼统计学家高尔顿首先提...回归分析是研究自变量和因变量之间数量变化关系的一种分析方法,它主要是通过建立因变量Y与影响它的自变量X之间的回归模型,衡量自变量X对...
  • 回归分析中的多重共线性问题

    千次阅读 2018-07-11 09:51:54
    最近做回归分析,出现了相关系数与回归方程系数符号相反的问题,经过研究,确认是多重共线性问题并探索了解决方法。 在此将多重共线性的相关知识整理如下。 解释变量理论上的高度相关与观测值高度相关没有必然关系...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 59,510
精华内容 23,804
关键字:

利用回归分析解决问题