西瓜书课后题——第十一章(特征选择与稀疏学习)

本文介绍了Relief算法在西瓜数据集上的应用,阐述了特征选择的重要性和实现过程。讨论了Relief-F的改进算法,提出了在有限时间内确保解的LVW算法策略。同时,探讨了L1正则化产生稀疏解的条件,以及岭回归和SVM在稀疏性利用上的异同。此外,文章指出L0范数正则化问题的求解困难,并简要说明了L1范数最小化问题的推导。最后,对比了字典学习和压缩感知在利用稀疏性上的区别。
摘要由CSDN通过智能技术生成

11.1 编程实现 Relief 算法,并在西瓜数据集上测试。

Relief 是过滤式特征选择算法,根据设计的 “相关统计量” 来度量特征的重要性。该方法和后续的学习器无关,只根据数据集就可完成特征选择。相关的思想理论介绍见书P249-250

代码实现如下:

import pandas as pd
import numpy as np

class Relief:
    def readData(self):
        dataset = pd.read_excel('./WaterMelon_3.0.xlsx',encoding = 'gbk')  # 读取数据
        self.Attributes = dataset.columns[1:-1]        #所有属性的名称
        #print(self.Attributes)
        dataset = np.matrix(dataset)
        dataset = dataset[:,1:]
        m,n = np.shape(dataset)      # 得到数据集大小
        #print(dataset)
        dataset[:,n-3:n-1] = (dataset[:,n-3:n-1]-np.min(dataset[:,n-3:n-1],0))/\
                             (np.max(dataset[:,n-3:n-1],0)-np.min(dataset[:,n-3:n-1],0))     # 连续属性规范化
        self.goodindex = np.where(dataset[:,n-1]=='是')[0]        # 好瓜的索引
        self.badindex = np.where(dataset[:,n-1]=='否')[0]         # 坏瓜的索引
        self.dataset = dataset


    # 计算每个样本之间的距离
    def getDist(self):
        m,n = np.shape(self.dataset)
        distance = np.ones([m,m])
        for i in range(m):
            distance[i,i] = np.inf
            for j in range(i+1,m):
                dis = 0
                for k in range(n-1):
                    if type(s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值