5 pièce(s) jointe(s)
Problème de variables quantitatives pour une régression logistique
Bonjour,
Je fais suite à une autre discussion car cela est un nouveau problème comme on me l'a indiqué.
Je vous explique, avec le fichier en pièce jointe se nommant "Régression logistiquebis.py" (fichier ci contre : Pièce jointe 602873), j'obtiens une tableau de régression logistique suivant :
Pièce jointe 602874
Je vous remets en cas ou le code ci dessous :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| import pandas as pd
import numpy as np
import statsmodels.api as sm
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import confusion_matrix
from sklearn.metrics import classification_report
from matplotlib.colors import ListedColormap
import seaborn as sns
# Importer le dataset
data = pd.read_csv("clients.csv")
#Permets de classer les données (exemple le groupe sangin, le sexe...)
data["Gender"] = data["Gender"].astype('category')
#Supprimes les données inutiles
data.drop(["User ID"],axis='columns',inplace=True)
print(data.head())
# on définit x et y
#Mettre y = data["Gender"].cat.codes, si il est nécessaire de classer les données
y = data["Gender"].cat.codes
# on ne prend que les colonnes quantitatives
x = data.select_dtypes(np.number)
#Mise en place du modèle
modele_logit = LogisticRegression(random_state = 0, solver='liblinear')
modele_logit.fit(x,y)
pd.DataFrame(np.concatenate([modele_logit.intercept_.reshape(-1,1),
modele_logit.coef_],axis=1),
index = ["coef"],
columns = ["constante"]+list(x.columns)).T
# on ajoute une colonne pour la constante
x_stat = sm.add_constant(x)
# on ajuste le modèle
model = sm.Logit(y, x_stat)
result = model.fit()
print(result.summary()) |
Ainsi, avec ce code, je mets en variable y des variables qualitatives (ici le sexe), et de l'autres côté (en x) je mets toutes les variables numériques.
Cependant mon idée, serait d'estimer mon salaire en fonction de l'âge et de la variable "Purchased".
Cependant, toutes ces variables sont des variables quantitatives. (cf fichier ci contre : Pièce jointe 602872)
Je vous remets également le code ici :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| import pandas as pd
import numpy as np
import statsmodels.api as sm
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import confusion_matrix
from sklearn.metrics import classification_report
from matplotlib.colors import ListedColormap
import seaborn as sns
# Importer le dataset
data = pd.read_csv("clients.csv")
#Permets de classer les données (exemple le groupe sangin, le sexe...)
#data["Gender"] = data["Gender"].astype('category')
#Supprimes les données inutiles
data.drop(["User ID"],axis='columns',inplace=True)
data.drop(["Gender"],axis='columns',inplace=True)
print(data.head())
# on définit x et y
#Mettre y = data["Gender"].cat.codes, si il est nécessaire de classer les données
#y = data["Purchased"]
# on ne prend que les colonnes quantitatives
#x = data.select_dtypes(np.number)
x = data.iloc[:, [0, 1]].values
y = data.iloc[:, -1].values
#Mise en place du modèle
modele_logit = LogisticRegression(random_state = 0, solver='liblinear')
modele_logit.fit(x,y)
pd.DataFrame(np.concatenate([modele_logit.intercept_.reshape(-1,1),
modele_logit.coef_],axis=1),
index = ["coef"],
columns = ["constante"]+list(x.columns)).T
# on ajoute une colonne pour la constante
x_stat = sm.add_constant(x)
# on ajuste le modèle
model = sm.Logit(y, x_stat)
result = model.fit()
print(result.summary()) |
Le problème lorsque j'exécute le code, vient de la partie (cf-image après le code) :
Code:
1 2 3 4
| pd.DataFrame(np.concatenate([modele_logit.intercept_.reshape(-1,1),
modele_logit.coef_],axis=1),
index = ["coef"],
columns = ["constante"]+list(x.columns)).T |
Pièce jointe 602875
Je vous mets également ci-après le jeux de donnnées : Pièce jointe 602876
Auriez-vous une idée pour que cela fonctionne lorsqu'on met des données quantitatives en y et en x, et dans les cas de figures auxquels je n'aurais pas pensé ? (En espérant avoir été clair)
En vous remerciant par avance de votre aide.
Cordialement