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 : Régression logistiquebis.py), j'obtiens une tableau de régression logistique suivant :
Je vous remets en cas ou le code ci dessous :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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())
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 : Régression logistiquetiers.py)
Je vous remets également le code ici :
Le problème lorsque j'exécute le code, vient de la partie (cf-image après le code) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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())
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Je vous mets également ci-après le jeux de donnnées : clients.xlsx
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
Partager