a Regressão Linear em Boston Habitação conjunto de dados

Créditos: http://www.wbur.org/radioboston/2013/09/18/bostons-housing-challenge

No meu blog anterior, Eu abordados os conceitos básicos de regressão linear e de gradiente descendente. Para obter a regressão linear de mãos-em-mãos, pegaremos um conjunto de dados original e aplicaremos os conceitos que aprendemos.

vamos pegar o conjunto de dados de habitação que contém informações sobre diferentes casas em Boston. Estes dados foram originalmente uma parte do repositório de aprendizado de máquina UCI e foram removidos agora. Nós também podemos acessar esses dados a partir da biblioteca scikit-learn. Existem 506 amostras e 13 variáveis de recursos neste conjunto de dados. O objetivo é prever o valor dos preços da casa usando as características dadas.vamos começar.

Primeiro, vamos importar as bibliotecas necessárias.

em seguida, vamos carregar os dados de habitação, a partir de scikit-learn biblioteca e compreendê-lo.

we print the value of the boston_dataset to understand what it contains. print(boston_dataset.keys())

dict_keys()
  • data: contém as informações para várias casas
  • público-alvo: os preços da casa
  • feature_names: nomes dos recursos
  • DESCR: descreve o conjunto de dados

Para saber mais sobre as características usar boston_dataset.DESCR A descrição de todos os recursos é dada abaixo:

CRIM: Per capita crime rate by town
ZN: Proportion of residential land zoned for lots over 25,000 sq. ft
INDUS: Proportion of non-retail business acres per town
CHAS: Charles River dummy variable (= 1 if tract bounds river; 0 otherwise)
NOX: Nitric oxide concentration (parts per 10 million)
RM: Average number of rooms per dwelling
AGE: Proportion of owner-occupied units built prior to 1940
DIS: Weighted distances to five Boston employment centers
RAD: Index of accessibility to radial highways
TAX: Full-value property tax rate per $10,000
PTRATIO: Pupil-teacher ratio by town
B: 1000(Bk — 0.63)², where Bk is the proportion of by town
LSTAT: Percentage of lower status of the population
MEDV: Median value of owner-occupied homes in $1000s

Os preços da casa indicada pela variável MEDV nosso alvo é variável e o restante são o recurso de variáveis com base em que vamos prever o valor de uma casa.

agora vamos carregar os dados em um dataframe pandas usando pd.DataFrame. Nós, em seguida, imprimir as primeiras 5 linhas de dados usando head()

podemos ver que o valor de destino MEDV está faltando o de dados. Criamos uma nova coluna de valores alvo e adicionamo-la ao dataframe.

pré-processamento de dados

após o carregamento dos dados, é uma boa prática verificar se existem valores em falta nos dados. Contamos o número de valores em falta para cada recurso, usando o isnull()

no Entanto, não há nenhuma falta de valores neste conjunto de dados, como mostrado abaixo.

Análise Exploratória de Dados

Análise exploratória de Dados é um passo muito importante antes do treinamento do modelo. Nesta seção, usaremos algumas visualizações para entender a relação da variável alvo com outras características.

vamos primeiro traçar a distribuição da variável-alvo MEDV. Usaremos a função distplot da biblioteca seaborn.

Nós vemos que os valores de MEDV são distribuídos normalmente com poucas exceções.a seguir, criamos uma matriz de correlação que mede as relações lineares entre as variáveis. A matriz de correlação pode ser formada usando a função corr da biblioteca de dados pandas. Usaremos a função heatmap da biblioteca seaborn para traçar a matriz de correlação.

O coeficiente de correlação varia de -1 a 1. Se o valor é próximo de 1, significa que há uma forte correlação positiva entre as duas variáveis. Quando está perto de -1, as variáveis têm uma forte correlação negativa.observações:

  • para encaixar um modelo de regressão linear, selecionamos as características que têm uma alta correlação com a nossa variável alvo MEDV. Observando a matriz de correlação, podemos ver que RM tem uma forte correlação positiva com MEDV (0.7) onde LSTAT tem uma alta correlação negativa com MEDV(-0.74).
  • um ponto importante na seleção de características para um modelo de regressão linear é verificar a multi-Co-linearidade. As características RADTAX têm uma correlação de 0.91. Estes pares de recursos estão fortemente correlacionados um com o outro. Não devemos selecionar estas duas características em conjunto para treinar o modelo. Vê isto para uma explicação. O mesmo vale para as características DISe AGE que têm uma correlação de-0,75.

Based on the above observations we will RMandLSTAT as our features. Usando um gráfico de dispersão vamos ver como essas características variam com MEDV.

Observações:

  • O aumento de preços como o valor de RM aumenta linearmente. Há poucos casos anómalos e os dados parecem estar limitados a 50.os preços tendem a diminuir com um aumento na LSTAT. Embora não pareça estar a seguir exactamente uma linha linear.

a Preparação dos dados para a formação do modelo

Nós concatenar LSTAT e RM colunas usando np.c_ fornecido pela biblioteca numpy.

dividindo os dados em conjuntos de treino e ensaio

em seguida, dividimos os dados em conjuntos de treino e ensaio. Treinamos o modelo com 80% das amostras e testamos com os restantes 20%. Fazemos isso para avaliar o desempenho do modelo em dados não vistos. Para dividir os dados usamos train_test_split função fornecida pela biblioteca scikit-learn. Nós finalmente imprimimos os tamanhos de nosso conjunto de treinamento e teste para verificar se a separação ocorreu corretamente.

(404, 2) 
(102, 2)
(404,)
(102,)

Treinamento e teste do modelo

Nós usamos scikit-aprender a LinearRegression para formar o nosso modelo de formação e conjuntos de teste.

Model evaluation

iremos avaliar o nosso modelo usando RMSE e R2-score.

The model performance for training set 
--------------------------------------
RMSE is 5.6371293350711955
R2 score is 0.6300745149331701 The model performance for testing set
--------------------------------------
RMSE is 5.137400784702911
R2 score is 0.6628996975186952

Este é boa para começar. Nos próximos blogs, vamos olhar para formas de aumentar o desempenho do modelo.

O Caderno de Jupyter completo pode ser encontrado aqui.

Conclusion

In this story, we applied the concepts of linear regression on the Boston housing dataset. Eu recomendaria experimentar outros conjuntos de dados também.

Aqui estão alguns lugares que você pode olhar para dados

  • https://www.kaggle.com/datasets
  • https://toolbox.google.com/datasetsearch
  • https://archive.ics.uci.edu/ml/datasets.html

Obrigado pela Leitura!!

na próxima parte desta série, vamos cobrir regressão polinomial. Observe este espaço para mais.

Related Posts

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *