Je veux estimer les meilleurs paramètres (mentionnés à la fin: pente et ordonnée à l'origine) pour sigmoïdales/logistiques utilisées en régression logistique pour une donnée médicale. Voici ce que je l'ai fait python:Comment trouver les paramètres logistiques/sigmoïdaux en régression logistique
import numpy as np
from sklearn import preprocessing, svm, neighbors
from sklearn.linear_model import LinearRegression, LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn import preprocessing, svm, utils
from scipy.io import loadmat
import pandas as pd
Je fichier Apache.mat qui contient 4 colonnes: score APACHE (0-72), Nombre de patients, Nombre de décès, Proportion (rapport du nombre de décès à Nombre de patients)
datamat = loadmat('Apache.mat')
data = pd.DataFrame(np.hstack((datamat['apacheII'], datamat['NoPatients'],
datamat['NoDeaths'], datamat['proportion'])))
data.columns = ['apacheII', 'NoPatients', 'NoDeaths', 'proportion']
Ici, j'ai créé la base de données avec laquelle travailler.
x = np.array(data.drop(['NoPatients', 'NoDeaths', 'proportion'],1))
Je l'ai laissé tomber les colonnes non désirées et maintenant seulement laissé avec un score ApacheII dans « x »
#scaling the data (normalizing)
x = preprocessing.scale(x)
y = np.array(data['proportion'])
Maintenant, je l'ai utilisé la fonction LabelEncoder() pour coder « y » afin qu'il puisse être compatible avec LogisticRegression().
lab_enc = preprocessing.LabelEncoder()
encoded = np.array(lab_enc.fit_transform(y))
clf = LogisticRegression()
clf.fit(x, encoded)
print(clf.coef_)
print(clf.intercept_)
La sortie est la suivante:
[[-0.49124107]
[-0.23528893]
[-0.19035795]
[-0.30312848]
[-0.25783808]
[-0.37161079]
[-0.12332468]
[-0.16797195]
[-0.05660718]
[-0.21279785]
[-0.22142453]
[-0.10105617]
[-0.14562868]
[ 0.00991192]
[-0.012247 ]
[ 0.03206243]
[ 0.07635461]
[ 0.20951544]
[ 0.12067417]
[-0.03441851]
[ 0.16504852]
[ 0.09850035]
[ 0.23179558]
[ 0.05420914]
[ 1.47513463]]
[-1.79691975 -2.35677113 -2.35090141 -2.3679202 -2.36017388 -2.38191049
-2.34441678 -2.34843121 -2.34070389 -2.35368047 -1.57944984 -2.3428732
-2.3462668 -2.33974088 -2.33975687 -2.34002906 -2.34151792 -2.35329447
-2.34422478 -2.34007746 -2.34814388 -2.34271603 -2.35632459 -2.34062229
-1.72511457]
Je veux juste savoir les paramètres de la fonction sigmoïde qui est généralement utilisé dans la régression logistique. Comment puis-je trouver les paramètres sigmoïdaux (c'est-à-dire l'interception et la pente)?
Voici fonction sigmoïde (si référence est nécessaire):
def sigmoid(x, x0, k):
y = 1/(1 + np.exp(-k*(x-x0)))
return y
Si «proportion» est une variable continue, je pense que pour ce problème, vous devriez chercher la régression de crête plutôt que la régression logistique. –
Oui, vous avez raison @GergesDib. Merci. Mais ici, j'essaie simplement de comprendre les paramètres de la fonction logistique, même si ce n'est pas le meilleur modèle de régression. Toute aide est appréciée. –
Je pense que vous les avez déjà trouvés, ils sont 'lr.coef_' et' lr.intercept_'. Quel est le problème? –