[Apprentissage automatique] Réduction de la dimensionnalité des fonctionnalités - Méthode de sélection de variance VarianceThreshold

« Page d'accueil de l'auteur » : Shibie Sanri wyx
« Profil de l'auteur » : CSDN top100, expert du blog Alibaba Cloud, expert du partage de cloud Huawei, créateur de haute qualité dans le domaine de la sécurité réseau
« Colonne recommandée » : les amis qui s'intéressent à la sécurité réseau peuvent payer attention à la rubrique "Introduction à la maîtrise de la sécurité réseau"

Parmi les fonctionnalités extraites, il existe des "fonctionnalités redondantes" liées (similaires) . Ces fonctionnalités ne doivent pas nécessairement être comptées. Nous devons "réduire" les fonctionnalités associées et laisser les fonctionnalités non pertinentes. C'est-à-dire "réduction de la dimensionnalité des caractéristiques" .

Il existe de nombreuses façons de réduire la dimensionnalité des caractéristiques, dont l'une est utilisée ici : la méthode de sélection de la variance (filtrage à faible variance)

1. La vulgarisation scientifique sur la variance

Commençons par vulgariser brièvement la science. Variance = moyenne du carré moins le carré de la moyenne. La formule est la suivante :

insérez la description de l'image ici

Par exemple, les cinq nombres 1, 2, 3, 4 et 5 ont une moyenne de 3 ;

La "variance" est la moyenne de la somme des carrés des différences entre chaque donnée et la moyenne de la somme : [(1-3)^2+(2-3)^2+(3-3)^2+(4-3)^2+(5-3)^2]/5=2, qui vaut 2.

Une petite variance signifie que la plupart des échantillons d'une caractéristique ont des valeurs similaires ; une grande variance signifie que la plupart des échantillons d'une caractéristique ont des valeurs différentes.

La méthode de sélection de la variance est également appelée "filtrage à faible variance" . Comme son nom l'indique, il s'agit de définir une valeur de variance, et toutes les caractéristiques inférieures à cette variance seront supprimées.


2. API de sélection de variance

sklearn.feature_selection est l'API de sélection de fonctionnalités

sklearn.feature_selection.VarianceThreshold (seuil=0)

  • VarianceThreshold.fit_transform( data ) : reçoit les données d'origine de type dictionnaire et renvoie les caractéristiques numériques après le filtrage de la variance
  • VarianceThreshold.inverse_transform( data ): Convertit les caractéristiques numériques filtrées en données d'origine
  • VarianceThreshold.get_feature_names_out() : renvoie les noms des fonctionnalités
  • VarianceThreshold.variances_ : renvoie la valeur de variance correspondant à chaque caractéristique

3. Obtenez le jeu de données

Ici, nous utilisons l'ensemble de données d'iris comme exemple

from sklearn import datasets

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

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

sortir:

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

Comme on peut le voir à partir des résultats de sortie, l'ensemble de données a maintenant 150 éléments de données, et chaque élément de données a 4 caractéristiques.


4. Effectuez un filtrage des écarts

Ensuite, nous effectuons un filtrage de la variance, en spécifiant une variance 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)

sortir:

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

Comme on peut le voir à partir des résultats de sortie, l'ensemble de données converti contient 150 éléments de données, chaque élément de données a 3 caractéristiques et la caractéristique avec une variance inférieure à 0,2 est filtrée.

Ensuite, nous changeons la variance à 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)

sortir:

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

Comme le montrent les résultats de sortie, la caractéristique de l'ensemble de données devient 1 et les trois caractéristiques dont la variance est inférieure à 1 sont filtrées.


5. Obtenir la valeur de variance de la caractéristique

Ensuite, nous obtenons la valeur de variance de chaque caractéristique pour vérifier la précision du filtrage.

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_)

sortir:

[0.68112222 0.18871289 3.09550267 0.57713289]

D'après les résultats de sortie, on peut voir que parmi les valeurs de variance des quatre caractéristiques, trois sont supérieures à 0,2 et une est supérieure à 1. Les résultats de filtrage des expériences ci-dessus sont conformes aux attentes.

Je suppose que tu aimes

Origine blog.csdn.net/wangyuxiang946/article/details/131405338
conseillé
Classement