集成学习task01-数学基础

实验目的

1、 理解等高线的几何含义、如何发现一个函数的最小解;
2、 掌握一门绘制函数图形的编程工具;

实验内容

给定下述Rosenbrock函数, f ( x ) = ( a − x 1 ) 2 + b ( x 2 − x 1 2 ) 2 f(x)=(a-x_1)^2+b(x_2-x_1^2)^2 f(x)=(ax1)2+b(x2x12)2,其中 , x = ( x 1 , x 2 ) T ∈ R 2 x=(x_1,x_2)^\mathrm{T} \in\mathbb{R}^2 x=(x1,x2)TR2 。试编写程序完成下述工作:
1) 为不同的a,b取值,绘制该函数的3D表面。请问 a,b取值对该表面形状有大的影响吗?,所谓大影响就是形状不再相似。对a,b的取值区间,能否大致给出一个分类,像下面这样给出一张表:

b ∈ ( − ∞ , 0 ) b\in(-\infty,0) b(,0) b = 0 b=0 b=0 b ∈ ( 0 , + ∞ ) b\in(0,+\infty) b(0,+)
在这里插入图片描述在这里插入图片描述在这里插入图片描述
from pylab import figure,show
import numpy as np
from mpl_toolkits.mplot3d import Axes3D

def RosenBrock(a,b):

    fig = figure()
    delta = 0.5
    ax = Axes3D(fig)
    #生成x轴数据列表
    x = np.arange(-100, 100, delta)
    #生成y轴数据列表
    y = np.arange(-100, 100, delta)
    #执行网格化
    X, Y = np.meshgrid(x, y) 
    Z = np.square(a-X) + b*np.square(Y - X**2)
    ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='hot')
    show()
    return fig
#自动画图并保存
for j in range(0,101,10):
    for k in range(0,101,10):
        fig = RosenBrock(j,k)
        fig.savefig("F:\\DataWhale\\8月组队学习\\集成学习\\ensemble-learning-main\\CH1-机器学习的数学基础\\CH1-机器学习的数学基础\\fig\\{0}_{1}.jpg".format(j,k))

2) 编写一个算法来找到它的全局最小值及相应的最小解,并在3D图中标出。分析一下你的算法时空效率、给出运行时间。

采用梯度下降法,但注意梯度爆炸容易导致数据溢出,代码如下:

import numpy as np
#import matplotlib as plt
from pylab import figure,show
from mpl_toolkits.mplot3d import Axes3D
import time

def RosenBrock(x, y ,a=1 ,b=1):
    return np.square(a-x) + b*np.square(y - x**2)

def RosenBrock_Grad(x, y, a=1, b=1):
    c = np.array([2 * (x - a) - 4 * b * x * (y - np.square(x)),
                  2 * b * (y - np.square(x))])
    return c

def Gradient_Descent(x_init,alpha=0.001, epsilon=1e-6, max_iterations=100000):
    x = x_init
    print(1,x,RosenBrock_Grad(x[0],x[1]))
    for i in range(max_iterations):
        x = x - alpha * RosenBrock_Grad(x[0],x[1])
        if np.linalg.norm(RosenBrock_Grad(x[0],x[1])) < epsilon:
            return x, i + 1
    return x, max_iterations

def RosenBrock_Plot():
    
    #画rosenbrock
    fig = figure()
    delta =0.1
    ax = Axes3D(fig)
    x = np.arange(-20, 20, delta)
    y = np.arange(-20, 20, delta)
    X, Y = np.meshgrid(x, y) 
    Z = RosenBrock(X,Y)
    ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='hot',alpha=0.3)
    ax.set_xlabel('x1')
    ax.set_ylabel('x2')
    ax.set_zlabel('f')
    
    #画最优值点
    
    start_time = time.time()
    x_init = np.zeros(2)
    x_min, max_iterations = Gradient_Descent(x_init)
    print("最小点:",x_min)
    print("迭代次数:",max_iterations)
    end_time = time.time()
    running_time = end_time-start_time
    print("优化的时间:%.5f秒!" % running_time)
    ax.scatter(x_min[0],x_min[1],RosenBrock(x_min[0],x_min[1]),c='r')
    show()
    
RosenBrock_Plot()

结果如下:
在这里插入图片描述
梯度下降法代码参考博客集成学习学习笔记——数学基础(1)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
集成学习是一种通过结合多个模型的预测结果来提升分类器或预测系统的效果的方法。在CIFAR-10数据集中,可以使用集成学习来提高图像分类的准确性。 引用中提到了CIFAR-10数据集是由10个类的60000个图像组成的,每个类有6000个图像。数据集被划分为5个训练批次和1个测试批次,每个批次包含10000个图像。其中测试批次包含了每个类别的1000个随机选择的图像,训练批次则以随机顺序包含剩余图像。因为每个批次中来自每个类别的图像数量可能不同,所以总体来看,5个训练批次包含了来自每个类别的5000张图像。 引用中提到了一种多Lora权值集成切换Zero-Finetune增强的跨模型技术方案,该方案旨在使语言模型能够以低能耗且广泛适用的方式进行集成。 引用中提到了模型集成的原理,类似于盲人摸象的比喻。每个盲人只能摸到大象的一部分,但是综合每个人摸到的部分,就能形成一个比较完整、复合实际的图像。在实际应用中,可以考虑各个模型之间的差异性和性能差异。如果模型的性能相差不大,可以取各个模型预测结果的平均值;如果模型性能相差较大,可以采用加权平均法。通过集成多个模型,可以得到一个强于单个模型的模型。 因此,在CIFAR-10数据集中,可以使用集成学习方法,如模型集成或权值集成,来提升分类器对图像的准确性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [pytorch实现CIFAR-10多分类](https://blog.csdn.net/W1517055683/article/details/105863128)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [实现一种多Lora权值集成切换+Zero-Finetune零微调增强的跨模型技术方案,LLM-Base+LLM-X+Alpaca](https://download.csdn.net/download/qq_35831906/88238087)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值