A classe VarianceThreshold do módulo sklearn.feature_selection é uma ferramenta que facilita a seleção de atributos com base na variância. Essa técnica é útil para identificar e remover atributos com baixa variância, ou seja, atributos cujos valores são praticamente constantes em todo o conjunto de dados, o que pode ser um sinal de que eles não são informativos para tarefas de modelagem de machine learning.

Sintaxe

from sklearn.feature_selection import VarianceThreshold
 
selector = VarianceThreshold(threshold=0.0)

Principais parâmetros

  • threshold: Este é o parâmetro mais importante e determina o limite de variância abaixo do qual os atributos são considerados para remoção. A variância é calculada para cada atributo, e se a variância desse atributo for menor ou igual a threshold, ele será removido. O valor padrão é 0, o que significa que qualquer atributo com variação zero (ou seja, valores constantes) será removido.

Principais métodos

  • fit(X, y=None): Este método ajusta o seletor aos dados de entrada X. Se você fornecer um vetor de rótulos y, ele será ignorado, pois a seleção de atributos com base na variância não depende dos rótulos. O método calcula a variância de cada atributo em X e determina quais atributos atendem ao critério de variância estabelecido pelo parâmetro threshold.

  • transform(X): Este método retorna uma nova matriz de dados X após a remoção dos atributos com baixa variância. Os atributos que não atendem ao critério são descartados, e a matriz resultante contém apenas os atributos selecionados.

  • fit_transform(X, y=None): Este método combina as etapas de ajuste (fit) e transformação (transform). Ele ajusta o seletor aos dados de entrada X e retorna a matriz resultante após a remoção dos atributos com baixa variância.

Principais atributos

  • variances_: Este atributo fornece as variâncias calculadas para cada atributo no conjunto de dados após o ajuste (fit). Você pode usá-lo para verificar as variâncias individuais dos atributos.

Exemplo

from sklearn.preprocessing import MinMaxScaler
from sklearn.feature_selection import VarianceThreshold
import numpy as np
 
# Criar um conjunto de dados de exemplo (matriz NumPy)
X_temperatures = np.array([
    [25.1, 24.9, 25.0, 24.8],  # Cidade A
    [28.5, 28.4, 28.3, 28.6],  # Cidade B
    [22.0, 22.2, 22.1, 22.3],  # Cidade C
    [30.2, 30.1, 30.0, 30.3]   # Cidade D
])
 
# Escalonar os dados
scaler = MinMaxScaler()
X_temperatures_scaler = scaler.fit_transform(X_temperatures)
 
# Criar um objeto VarianceThreshold com um limite específico (por exemplo, 0.1)
selector = VarianceThreshold(threshold=0.15)
 
# Ajustar o seletor aos dados e obter a matriz resultante
X_low_variance = selector.fit_transform(X_temperatures_scaler)
 
# Imprimir os atributos selecionados
print(X_low_variance)

Saída:

[[0.34177215 0.3125    ]
 [0.78481013 0.7875    ]
 [0.         0.        ]
 [1.         1.        ]]

Neste exemplo, o seletor VarianceThreshold é usado para remover atributos com baixa variância (menos de 0.1) do conjunto de dados de entrada X. A matriz resultante X_low_variance conterá apenas os atributos selecionados.

A seleção de atributos com base na variância é útil quando você deseja remover atributos que não contribuem significativamente para a tarefa de modelagem, reduzindo assim a dimensionalidade do conjunto de dados e melhorando a eficiência do modelo.