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 athreshold
, 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 entradaX
. Se você fornecer um vetor de rótulosy
, 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 emX
e determina quais atributos atendem ao critério de variância estabelecido pelo parâmetrothreshold
. -
transform(X)
: Este método retorna uma nova matriz de dadosX
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 entradaX
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.