[Aprendizaje automático] Reducción de la dimensionalidad de las características - Método de selección de varianza Umbral de varianza

"Página de inicio del autor": Shibie Sanri wyx
"Perfil del autor": CSDN top100, experto en blogs de Alibaba Cloud, experto en compartir en la nube de Huawei, creador de alta calidad en el campo de la seguridad de la red
"Columna recomendada": los amigos interesados ​​en la seguridad de la red pueden pagar atención a la columna "Introducción al dominio de la seguridad de redes"

Entre las funciones extraídas, hay algunas "funciones redundantes" relacionadas (similares) . No es necesario contar dichas funciones. Necesitamos "reducir" las funciones relacionadas y dejar las funciones irrelevantes. Es decir, "reducción de dimensionalidad de características" .

Hay muchas maneras de reducir la dimensionalidad de las características, una de las cuales se usa aquí: método de selección de varianza (filtrado de varianza baja)

1. Ciencia popular sobre la varianza

Vamos a popularizar brevemente la ciencia primero. Varianza = media del cuadrado menos el cuadrado de la media. La fórmula es:

inserte la descripción de la imagen aquí

Por ejemplo, los cinco números 1, 2, 3, 4 y 5 tienen un promedio de 3;

La "varianza" es el promedio de la suma de los cuadrados de las diferencias entre cada dato y el promedio de la suma: [(1-3)^2+(2-3)^2+(3-3)^2+(4-3)^2+(5-3)^2]/5=2, que es 2.

Una variación pequeña significa que la mayoría de las muestras de una característica tienen valores similares; una variación grande significa que la mayoría de las muestras de una característica tienen valores diferentes.

El método de selección de varianza también se denomina "filtrado de varianza baja" Como su nombre lo indica, es para establecer un valor de varianza, y todas las características inferiores a esta varianza se eliminarán.


2. API de selección de varianza

sklearn.feature_selection es la API de selección de características

sklearn.feature_selection.VarianceThreshold(umbral=0)

  • VarianceThreshold.fit_transform (datos): recibe los datos originales del tipo de diccionario y devuelve las características digitales después del filtrado de varianza
  • VarianceThreshold.inverse_transform( data ): Convierte las características digitales filtradas a los datos originales
  • VarianceThreshold.get_feature_names_out(): devuelve nombres de características
  • VarianceThreshold.variances_: devuelve el valor de varianza correspondiente a cada característica

3. Obtenga el conjunto de datos

Aquí usamos el conjunto de datos del iris como ejemplo.

from sklearn import datasets

# 初始化鸢尾花数据集
iris = datasets.load_iris()

# 打印数据特征
print(iris.data)
# 打印特征数总结
print(iris.data.shape)

producción:

[[5.1 3.5 1.4 0.2]
 [4.9 3.  1.4 0.2]
 ......
 [5.9 3.  5.1 1.8]]
(150, 4)

Como se puede ver en los resultados de salida, el conjunto de datos ahora tiene 150 datos y cada dato tiene 4 características.


4. Realizar filtrado de varianza

A continuación, realizamos un filtrado de varianza, especificando una varianza de 0,2

from sklearn import feature_selection
from sklearn import datasets

# 初始化鸢尾花数据集
iris = datasets.load_iris()
# 初始化转换器(指定方差为0.2)
vt = feature_selection.VarianceThreshold(threshold=0.2)

# 使用转换器对数据进行低方差过滤
result = vt.fit_transform(iris.data)

# 打印数据特征
print(result)
print(result.shape)

producción:

[[5.1 1.4 0.2]
 [4.9 1.4 0.2]
 ......
 [5.9 5.1 1.8]]
(150, 3)

Como se puede ver en los resultados de salida, el conjunto de datos convertido tiene 150 datos, cada dato tiene 3 características y la característica con una variación de menos de 0,2 se filtra.

A continuación, cambiamos la varianza a 1

from sklearn import feature_selection
from sklearn import datasets

# 初始化鸢尾花数据集
iris = datasets.load_iris()
# 初始化转换器(指定方差为1)
vt = feature_selection.VarianceThreshold(threshold=1)

# 使用转换器对数据进行低方差过滤
result = vt.fit_transform(iris.data)

# 打印数据特征
print(result)
print(result.shape)

producción:

[[1.4]
 [1.4]
 ......
 [5.1]]
(150, 1)

Como se puede ver en los resultados de salida, la característica del conjunto de datos se convierte en 1 y las tres características con una varianza inferior a 1 se filtran.


5. Obtenga el valor de la varianza de la característica

A continuación, obtenemos el valor de varianza de cada característica para verificar la precisión del filtrado.

from sklearn import feature_selection
from sklearn import datasets

# 初始化鸢尾花数据集
iris = datasets.load_iris()
# 初始化转换器(指定方差为1)
vt = feature_selection.VarianceThreshold(threshold=0.2)

# 使用转换器对数据进行低方差过滤
result = vt.fit_transform(iris.data)

# 获取特征的方差值
print(vt.variances_)

producción:

[0.68112222 0.18871289 3.09550267 0.57713289]

A partir de los resultados de salida, se puede ver que entre los valores de varianza de las cuatro características, tres son mayores que 0,2 y uno es mayor que 1. Los resultados de filtrado de los experimentos anteriores están en línea con las expectativas.

Supongo que te gusta

Origin blog.csdn.net/wangyuxiang946/article/details/131405338
Recomendado
Clasificación