Estou tentando padronizar colunas de conjunto de dados para regressão linear.
Uma das colunas possui desvio padrão = 0.
def standardize(X):
return (X - mean(X)) / std(X)
Portanto, esse código não funciona.
Existem truques para resolver este problema? Eu tentei duas coisas
- Jogue sempre a coluna com desvio padrão 0 porque é um parâmetro inútil.
- Adicione um ruído muito pequeno, como a um dos elementos da coluna para que a função funcione.
standardize
Obrigado!
regression
standardization
Pratik Deoghare
fonte
fonte
Respostas:
A situação que você descreve surgirá como resultado de um desses dois cenários:
Para o Cenário 1 : pule essa coluna, padronize todas as outras colunas e execute a regressão como faria normalmente.
Para o cenário 2 , no entanto, você terá que se livrar completamente dessa coluna constante adicional. De fato, independentemente da questão da padronização , você nunca poderá executar a regressão com duas colunas constantes, desde então, teria uma colinearidade perfeita . O resultado é que, mesmo se você tentar executar a regressão, o programa de computador emitirá uma mensagem de erro e sairá no meio [Nota: isso ocorre porque uma regressão OLS exige que a matriz X'X não seja singular para que as coisas funcionem corretamente].
De qualquer forma, boa sorte com o seu, hum, regredindo!
[****] Apenas para esclarecer: o que quero dizer com "duas colunas de constantes" é que você tem uma coluna na qual todo elemento é '1' e uma segunda coluna na qual todo elemento é uma constante 'k' .. .
fonte
O caminho certo seria excluir a coluna do recurso dos dados. Mas como um corte temporário -
Você pode simplesmente substituir o 0 std para 1 para esse recurso. Isso basicamente significa que o valor escalado seria zero para todos os pontos de dados desse recurso. Isso faz sentido, pois implica que os valores dos recursos não se desviam nem um pouco da média (como os valores são constantes, a constante é a média).
FYI- É isso que o sklearn faz! https://github.com/scikit-learn/scikit-learn/blob/7389dbac82d362f296dc2746f10e43ffa1615660/sklearn/preprocessing/data.py#L70
fonte
O recurso que tem variação zero é inútil, remova-o.
Considere isso: se esse fosse o único recurso, você não aprenderia nada sobre a resposta a esse recurso a partir dos dados. No caso multivariado, é necessário álgebra linear para chegar à mesma conclusão, mas a idéia é a mesma.
fonte