# relieff
使用 ReliefF 算法对特征重要性进行排序
函数库: TyMachineLearning
# 语法
idx, weights = relieff(X, y)
idx, weights = relieff(X, y, Name=Value)
# 说明
idx, weights = relieff(X, y) 该函数使用ReliefF算法和 k 近邻来对预测变量的重要性进行排序。输入矩阵 X 包含预测变量,向量 y 包含响应向量。该函数返回 idx,其中包含预测变量重要性的索引排序,以及weights,其中包含预测变量的权重(重要性)。
# 示例
确定预测变量的重要性
使用 relieff 确定鸢尾花数据集中预测变量的重要性。
加载示例数据集 iris dataset:
using DataFrames
using TyMachineLearning
using CSV
iris_X, iris_y = get_irsdata()
使用 10 个 k 近邻计算特征重要性:
index, weights = relieff(iris_X, iris_y, k=10)
查看计算结果:
print("index = $(index)\n weights = $(weights)")
index = [3, 4, 1, 2]
weights = [0.14881517676612965, 0.11137491575271126, 0.5145096807793637, 0.2253002267017953]
index 显示了特征的排名,第 3 个特征的重要性最高,第 2 个特征的重要性最低;weights 显示了每一个特征的重要性,第一个特征的重要性约为 0.15,第 4 个特征的重要性约为 0.23.
# 输入参数
X - 预测数据数值型 Matrix
预测数据,指定为数值型 Matrix。X 的每一行对应一个观测值,每一列对应一个预测变量。
数据类型: Numerical Matrix
y - 响应值数值型 Vector
响应值,指定为数值型 Vector,每一行对应 X 中的每一个观测的响应值。
数据类型: Numerical Vector
# 名称-值对组参数
指定可选的、以逗号分隔的 Key=Value 对组参数。Key 为参数名称,Value 为对应的值。您可采用任意顺序指定多个名称-值对组参数,如 Key1=Value1,...,KeyN=ValueN 所示。
示例:
k - 最近邻个数5 (默认) | 数值
算法过程中,对于每一个观测值进行最近邻选取时的最近邻个数。
数据类型: Int64
updates - 迭代次数size(y) (默认) | 数值
进行 relieff 算法的迭代次数,默认等于所有观测值的数量。
数据类型: Int64
# 输出参数
idx - 预测变量的重要性序列数值型 Vector
X 中的预测变量的索引所构成的数组,其中按照预测变量的权重进行降序排序。如果 idx[3] 为 5,则表示第 3 重要预测变量为 X 中第 5 列对应的预测变量。
weights - 预测变量的权重数值型 Vector
预测变量的权重,即预测变量的重要性。weights 中权重的顺序与 X 中的预测变量一一对应。