Ich möchte die besten Parameter (sehr am Ende erwähnt: Steigung und Achsenabschnitt) für sigmoidal/logistisch in der logistischen Regression für eine medizinische Daten verwendet. Hier ist, was ich habe Python getan:So finden Sie logistische/sigmoidale Funktionsparameter in der logistischen Regression
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
Ich habe Apache.mat-Datei, die enthält 4 Spalten: Apache-Score (0-72), Anzahl der Patienten, Anzahl der Todesfälle, Anteil (Verhältnis der Anzahl der Todesfälle Anzahl der Patienten)
datamat = loadmat('Apache.mat')
data = pd.DataFrame(np.hstack((datamat['apacheII'], datamat['NoPatients'],
datamat['NoDeaths'], datamat['proportion'])))
data.columns = ['apacheII', 'NoPatients', 'NoDeaths', 'proportion']
Hier habe ich den Datenrahmen erstellt, um damit zu arbeiten. in ‚x‘
#scaling the data (normalizing)
x = preprocessing.scale(x)
y = np.array(data['proportion'])
Jetzt
x = np.array(data.drop(['NoPatients', 'NoDeaths', 'proportion'],1))
Ich habe die unerwünschten Spalten fallen gelassen und jetzt nur noch mit ApacheII Punktzahl links habe ich LabelEncoder() Funktion zu kodieren ‚y‘ so könnte es kompatibel mit LogisticRegression() sein.
lab_enc = preprocessing.LabelEncoder()
encoded = np.array(lab_enc.fit_transform(y))
clf = LogisticRegression()
clf.fit(x, encoded)
print(clf.coef_)
print(clf.intercept_)
Die Ausgabe ist wie folgt:
[[-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]
Ich möchte nur die Parameter für Sigmoidalfunktion herauszufinden, die in der Regel in der logistischen Regression verwendet wird. Wie finde ich die sigmoidalen Parameter (d. H. Schnittpunkt und Steigung)? Hier
ist Sigmoidalfunktion (falls Referenz benötigt wird):
def sigmoid(x, x0, k):
y = 1/(1 + np.exp(-k*(x-x0)))
return y
Wenn "Proportion" kontinuierliche Variablen sind, denke ich, dass Sie für dieses Problem eher eine Ridge-Regression als eine logistische Regression suchen sollten. –
Ja, Sie haben @GergesDib korrekt. Vielen Dank. Aber hier versuche ich nur die Parameter für die logistische Funktion herauszufinden, obwohl es nicht das beste Regressionsmodell ist. Jede Hilfe wird geschätzt. –
Ich glaube, du hast sie schon gefunden, sie sind 'lr.coef_' und' lr.intercept_'. Was ist das Problem? –