统计学习方法 习题5.2 python实现

本文介绍了一种使用平方误差损失准则构建二叉回归树的方法,并提供了详细的Python代码实现。通过选择最优划分点来最小化平方误差,从而实现回归树的递归构建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

根据表5.2所示的数据,用平方误差损失准则生成二叉回归树


二叉回归树的算法为:


其中公式5.21中的c1,c2分别为R1和R2上数据的平均值

代码仿照机器学习实战上关于决策树实现(递归的建立一棵树)保存为cart.py:

#coding:utf-8
import numpy as np

#数据集
def createDataSet():
    dataSet = [4.5,4.75,4.91,5.34,5.8,7.05,7.9,8.23,8.7,9]
    datalabel = [1,2,3,4,5,6,7,8,9,10]
    return dataSet,datalabel

#计算数据集的平方误差
def calcMSE(dataSet):
    means = np.mean(dataSet)
    sums = sum([(i-means)*(i-means) for i in dataSet])*1.0
    return sums

#选择最优的划分点
def chooseBestFeatureToSplit(dataSet):
    nums = len(dataSet)-1
    if nums == 0:
        return 0
    best = 0
    bestMES = 100000
    for i in range(nums):
        temp = calcMSE(dataSet[:i+1]) + calcMSE(dataSet[i+1:])
        if temp <= bestMES:
            bestMES = temp
            best = i
    return best

# def getkeyofromvalue(dataSet,value):
#     u = -1
#     for i in range(len(dataSet)):
#         if dataSet[i] == value:
#             u = i
#     return u

#建树过程
def createTree(dataSet,datalabel,left,right):
    if right-left == 1:
        #return dataSet[left]
        return datalabel[left]
    if left >= right:
        return -1
    #最优划分函数加上left为原数据集上的最优划分下标
    bestchoose = left + chooseBestFeatureToSplit(dataSet[left:right])
    #print bestchoose+1
    mytree = {datalabel[bestchoose]:{}}
    mytree[datalabel[bestchoose]]['left'] = createTree(dataSet,datalabel,left,bestchoose)
    mytree[datalabel[bestchoose]]['right'] = createTree(dataSet,datalabel,bestchoose+1,right)
    return mytree

调用方法:

import cart
mydat,myla = cart.createDataSet()
myt = cart.createTree(mydat,myla,0,len(mydat))
print myt
结果(没有进行可视化操作):



<think>我们使用openstack-config命令来设置Cinder配置文件中的LVM后端参数。用户要求设置以下参数:1.volume_group=cinder-volumes2.iscsi_protocol=iscsi3.iscsi_helper=lioadm注意:这些参数都是在[lvm]配置节下设置的。步骤:1.确保已经创建了名为`cinder-volumes`的LVM卷组(如果尚未创建,需要先创建)。2.使用openstack-config命令设置参数。3.重启CinderVolume服务使配置生效。具体命令如下:</think>### 配置 Cinder LVM 后端参数 要使用 `openstack-config` 命令配置 Cinder LVM 后端,请执行以下命令序列: ```bash # 设置卷组名称 openstack-config --set /etc/cinder/cinder.conf lvm volume_group cinder-volumes # 设置 iSCSI 协议类型 openstack-config --set /etc/cinder/cinder.conf lvm iscsi_protocol iscsi # 设置 iSCSI 管理工具 openstack-config --set /etc/cinder/cinder.conf lvm iscsi_helper lioadm # 启用 LVM 后端(若未启用) openstack-config --set /etc/cinder/cinder.conf DEFAULT enabled_backends lvm # 重启服务使配置生效 systemctl restart openstack-cinder-volume target systemctl enable openstack-cinder-volume target ``` #### 参数说明: 1. **`volume_group = cinder-volumes`** - 指定 LVM 使用的卷组名称,必须与系统中已创建的卷组一致 - 创建卷组示例: ```bash pvcreate /dev/sdb # 创建物理卷 vgcreate cinder-volumes /dev/sdb # 创建卷组[^5] ``` 2. **`iscsi_protocol = iscsi`** - 定义 iSCSI 协议类型(默认为 iscsi) - 支持值:`iscsi`(标准协议)或 `iser`(RDMA 加速) 3. **`iscsi_helper = lioadm`** - 指定 iSCSI 目标管理工具 - 常用选项:`lioadm`(LIO 内核目标)或 `tgtadm`(TGT 用户空间目标) #### 验证配置: ```bash # 检查配置节 grep -A 5 '[lvm]' /etc/cinder/cinder.conf # 预期输出 [lvm] volume_group = cinder-volumes iscsi_protocol = iscsi iscsi_helper = lioadm ``` #### 创建 Cinder 用户和服务端点(若未配置): ```bash # 创建 cinder 用户 openstack user create --domain default --password CINDER_PASS cinder # 添加 admin 角色 openstack role add --project service --user cinder admin # 创建服务端点 openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2 openstack service create --name cinderv3 --description "OpenStack Block Storage" volumev3 ``` #### 注意事项: 1. **权限要求**:所有命令需以 root 权限执行 2. **服务依赖**:必须同时重启 `target` 服务(iSCSI 目标服务) 3. **空间验证**:执行 `vgs cinder-volumes` 确认卷组可用空间 4. **防火墙**:确保 iSCSI 端口(TCP 3260)在节点间可访问 [^1]: [OpenStack 官方存储指南](https://docs.openstack.org/cinder/latest/configuration/block-storage/backends.html) [^2]: [Cinder LVM 配置参考](https://docs.openstack.org/cinder/latest/configuration/block-storage/configuring-lvm-driver.html)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值