0

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 
+0

Wenn "Proportion" kontinuierliche Variablen sind, denke ich, dass Sie für dieses Problem eher eine Ridge-Regression als eine logistische Regression suchen sollten. –

+0

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. –

+0

Ich glaube, du hast sie schon gefunden, sie sind 'lr.coef_' und' lr.intercept_'. Was ist das Problem? –

Antwort

1

Das normale Verhalten von Logistische Regression für multinomial Problemlösung ist. Blick there:

Im mehrklassige Fall der Trainingsalgorithmus verwendet die one-vs-Rest (OVR) -Schema

intercept_ die Form (1,), wenn das Problem ist binär.

Beispiele:

>>> clf = LogisticRegression() 
>>> clf.fit([[1,2], [1,3], [0, 1]], [[0],[1],[0]]) 
>>> clf.coef_ 
array([[ 0.02917282, 0.12584457]]) 
>>> clf.intercept_ 
array([-0.40218649]) 
>>> clf.fit([[1,2], [1,3], [0, 1]], [[0],[1],[2]]) 
>>> clf.coef_ 
array([[ 0.25096507, -0.24586515], 
     [ 0.02917282, 0.12584457], 
     [-0.41626058, -0.43503612]]) 
>>> clf.intercept_ 
array([-0.15108918, -0.40218649, 0.1536541 ]) 

In der Tat gibt es einige Modelle, die unterschiedliche binäre Probleme zu lösen Ziel. Sie können den i-ten Coef- und i-ten Abschnitt zusammenführen, und Sie erhalten ein Modell zur Lösung des i-ten binären Problems und so weiter zum Ende der Liste.

Verwandte Themen