西瓜书《机器学习》课后答案——chapter11_11.1 Relief特征选择算法
来源:互联网 发布:革委会 知乎 编辑:程序博客网 时间:2024/04/30 02:27
试编程实现Relief算法,并考察其在西瓜数据集3.0上的运行结果。
# -*- coding: gbk -*-"""Author: VictoriaDate: 201.11.14 16:00"""import numpy as npimport operatorimport xlrddef diff(x, y, discrete=True): """ Input: x: value y: value """ if discrete: if x==y: return 0 else: return 1 else: return abs(x-y)def nearest(X, y, x, x_label): """ Compute near-hit and near-miss in binary classification problem. Input: X: list, instances y: list, labels x: instance x_label: label for instance x Return: near_hit: list, instance near_miss: list, instance """ near_hit_dist = float("inf") near_miss_dist = float("inf") for i in range(len(X)): dist = np.sum((np.array(x) - np.array(X[i]))**2) if y[i]==x_label: if dist < near_hit_dist and dist!=0: near_hit = X[i] near_hit_dist = dist else: if dist < near_miss_dist: near_miss = X[i] near_miss_dist = dist return near_hit, near_missdef relief(X, y, k, discrete): """ Input: X: list y: list k: selecting features number discrete: list, whether the corresponding feature is discrete or not """ N = len(X) d = len(X[0]) delta = [] for i in range(d): delta_i = 0 for j in range(N): near_hit, near_miss = nearest(X, y, X[j], y[j]) delta_i += -diff(X[j][i], near_hit[i], discrete[i])**2 + diff(X[j][i], near_miss[i], discrete[i])**2 delta.append(delta_i) print delta features_and_delta = zip(range(d), delta) features_and_delta = sorted(features_and_delta, key=operator.itemgetter(1), reverse=True) print features_and_delta select_features_index = [features_and_delta[i][0] for i in range(k)] return select_features_indexif __name__=="__main__": workbook = xlrd.open_workbook("../../数据/3.0.xlsx") sheet = workbook.sheet_by_name("Sheet1") X = [] y = [] for i in range(17): X.append(sheet.col_values(i)[:-1]) y = sheet.row_values(8) relief(X, y, 1, [1, 1, 1, 1, 1, 1, 0, 0])
特征[色泽,根蒂,敲声,纹理,脐部,触感,密度,含糖量]对应的统计量为:
[-4, 6, -1, 8, 2, -3, -0.40418499999999996, 0.26350200000000007]
可以看出Relief算法认为最好的特征是纹理,其次是根蒂。
阅读全文
0 0
- 西瓜书《机器学习》课后答案——chapter11_11.1 Relief特征选择算法
- 西瓜书《机器学习》课后答案——chapter10 _10.1 KNN算法
- 西瓜书《机器学习》课后答案——Chapter1
- 西瓜书《机器学习》课后答案——Chapter2
- 西瓜书《机器学习》课后答案——Chapter3_3.4
- 西瓜书《机器学习》课后答案——Chapter3_3.3
- 西瓜书《机器学习》课后答案——Chapter3_3.5
- 西瓜书《机器学习》课后答案——Chapter3
- 西瓜书《机器学习》课后答案——chapter5
- 西瓜书《机器学习》课后答案——chapter5_5.5
- 西瓜书《机器学习》课后答案——chapter5_5.7
- 西瓜书《机器学习》课后答案——chapter5_5.10
- 西瓜书《机器学习》课后答案——chapter6
- 西瓜书《机器学习》课后答案——chapter6_6.2
- 西瓜书《机器学习》课后答案——Chapter6_6.3
- 西瓜书《机器学习》课后答案——chapter7
- 西瓜书《机器学习》课后答案——chapter7_7.3
- 西瓜书《机器学习》课后答案——chapter9
- vue中的class和style
- LSTM模型简介及Tensorflow实现
- Centos7搭建ganglia
- 汇编第四节-第一个程序
- NRF52832开发:普通串口驱动
- 西瓜书《机器学习》课后答案——chapter11_11.1 Relief特征选择算法
- python模糊图片过滤
- ffsdafdsa
- 数据库优化
- 6.12计算输入的正数和
- Name.GetBuffer()会导致CString::left()不起作用
- SpringMVC+Spring+mybatis+redis项目从零开始--Springmvc配置实现
- 保护模式虚拟机使用qemu的snapshot参数引发的惨案
- 通俗解释悲观锁与乐观锁