Wir verwenden den Boston Housing Dataset, der aus einer Reihe von Daten besteht, die mit der Datensammlung zur Besetzung von Häusern verknüpft sind, zusammen mit mehr als 13 verschiedenen Personen, die vor den Häusern in Beziehung gesetzt werden können. Es handelt sich um soziale und wirtschaftliche Bedingungen, Umgebungsbedingungen, Bildungseinrichtungen und viele weitere beliebte Faktoren. Es gibt 12 verschiedene Zahlen in unserer Kombination mit 1 verschiedenen Kategorien.
Unser Ziel ist es, ein lineares Regressionsmodell zu konstruieren, um die Beschäftigungsverhältnisse von Privathäusern in Boston abzuschätzen.
import numpy as np
import pandas as pd
import math
import statsmodels.api as sm
import statsmodels.method.api as smf
from sklearn import linear_model
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
from sklearn.datasets import load_boston
# Carregando o dataset
boston = load_boston()
df = pd.DataFrame(boston.information, columns = boston.feature_names)
df['target'] = boston.goal# Formato do Dataset
print("Boston housing dataset tem {} observações com {} variáveis cada uma.".format(*df.form))
Boston housing dataset tem 506 observações com 14 variáveis cada uma.
# Coletando x e y
X = df.iloc[:,:-1]
y = df['target'].values
Wir haben die Attribute eines statistischen Lebenslaufs (OLS) analysiert, der von StatsModels erstellt wurde.
Xc = sm.add_constant(X)
modelo = sm.OLS(y, Xc)
modelo_v1 = modelo.match()
modelo_v1.abstract()
O R2 (R-Quadrat) zeigt die Größe der Variabilität an und wird durch die unterschiedlichen Präditoren erklärt. Unser Ergebnis lag bei 74 %.
Na coluna ‚coef‘ mostra nossos coeficientes. Die ‚const‘-Reihe enthält keine Koeffizienten von ‚b‘ und es sind jeweils zwei Koeffizienten von ‚m‘, die sich auf jede Variable beziehen.
Jetzt analysieren wir die Spalte ‚P>|t|‘ conhecida como valor-p. Es gibt Hinweise darauf, dass eine Variation mit dem vorherigen Wert in Zusammenhang steht, additionally mit einem Wert von weniger als 0,05. Dies gilt jedoch nicht, da die Variablen „INDUS“ und „AGE“ einen Wert von p > 0,05 aufweisen, oder in diesem Fall keine signifikante Verbindung zwischen einem unterschiedlichen Spieler und einer unterschiedlichen Antwort besteht.
Bevor wir das Modell ausschrieben, wählten wir verschiedene Optionen aus, die am besten zu einem anderen Anbieter passen. Verwendung der Korrelationsmethode R2:
# Criando o modelo
modelo = linear_model.LinearRegression(normalize = False, fit_intercept = True)def r2_est(X,y):
return r2_score(y, modelo.match(X,y).predict(X))
print ('Coeficiente R2: %0.3f' % r2_est(X,y))
Coeficiente R2: 0.741
# Gerando o impacto de cada atributo no R2
r2_impact = listing()
for j in vary(X.form[1]):
choice = [i for i in range(X.shape[1]) if i!=j]
r2_impact.append(((r2_est(X,y) - r2_est(X.values[:,selection],y)), df.columns[j]))
for imp, varname in sorted(r2_impact, reverse = True):
print ('%6.3f %s' % (imp, varname))
0.056 LSTAT
0.044 RM
0.029 DIS
0.028 PTRATIO
0.011 NOX
0.011 RAD
0.006 B
0.006 ZN
0.006 CRIM
0.006 TAX
0.005 CHAS
0.000 INDUS
0.000 AGE
Auf Foundation dieser Ergebnisse werden folgende Optionen ausgewählt: LSTAT, RM, DIS und PTRATIO.
# Coletando x e y
# Usaremos como variáveis explanatórias somente as 4 variáveis mais relevantes
X = df[['LSTAT', 'RM', 'DIS', 'PTRATIO']]
y = df['target'].values# Divisão em dados de treino e de teste
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state = 42)
# Criando o modelo
modelo = LinearRegression(normalize = False, fit_intercept = True)
# Treinamento do modelo
modelo = modelo.match(X_train, y_train)
# Calcular a métrica R2 do nosso modelo
r2_score(y_test, modelo.match(X_train, y_train).predict(X_test))
0.661383670138217
Der R2 (Korrelationskoeffizient) wird wie eine mittlere Kraft zwischen den Schwankungen und im Wert von 0 bis 1 verwendet. Unser Modell liegt bei R2 von etwa 0,7 und wird als eine starke Korrelation betrachtet.
# Imply Squared Error (MSE)
from sklearn.metrics import mean_squared_error
y_pred = modelo.predict(X_test)
MSE = mean_squared_error(y_test,y_pred)
print("MSE: ", MSE)MSE: 25.23135094783142
LSTAT = 4
RM = 6.5
DIS = 6
PTRATIO = 15# Lista com os valores das variáveis
dados_nova_casa = [LSTAT, RM, DIS, PTRATIO]
# Reshape
Xp = np.array(dados_nova_casa).reshape(1, -1)
# Previsão
print("Taxa Média de Ocupação Para a Casa:", modelo.predict(Xp))
Taxa Média de Ocupação Para a Casa: [31.32932624]
Wir verstehen die Grundlagen des linearen Regressionsmodells als Grundlage, außerdem müssen wir das Modell für die Ermittlung der Koeffizienten trainieren und für die Regression einsetzen, damit wir die von uns verwendeten MSE-Rechner (im Abstand zwischen den Brücken der beiden Dados) am besten beschreiben können ). Unser lineares Regressionsmodell führte zu einem relativen Ergebnis vor der Besetzung der Arbeitsmedien im Haus.
In diesem Fall müssen Sie mit der Bearbeitung der Anwendung fortfahren Clique hier.
Obrigado por ler! Certifique-se de curtir/compartilhar Dieser Weblog e Kommentar Ihre Erfahrung als Coach.
Tem alguma pergunta ? Ich bin bereit, Kontakt mit Ihnen aufzunehmen Linkedin Du siga-me nein Github Für weitere interessante Projekte.