0

医療データのロジスティック回帰で使用されるシグモイド/ロジスティックの最良のパラメータ(スロープおよびインターセプト)を推定したいと思います。死亡者の数の(比率にApacheのスコア(0-72)、患者数、死亡数、割合:私はApache.matの4列が含まれるファイルを持っているロジスティック回帰におけるロジスティック/シグモイド関数パラメータの検索方法

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 

:ここで私のpythonをやったものです患者数)

datamat = loadmat('Apache.mat') 
data = pd.DataFrame(np.hstack((datamat['apacheII'], datamat['NoPatients'], 
datamat['NoDeaths'], datamat['proportion']))) 

data.columns = ['apacheII', 'NoPatients', 'NoDeaths', 'proportion'] 

ここで私はデータフレームを作成しました。

x = np.array(data.drop(['NoPatients', 'NoDeaths', 'proportion'],1)) 

I望ましくない列を落とし、今だけ私がコードするLabelEncoder()関数を使用した、ここで 'X'

#scaling the data (normalizing) 
x = preprocessing.scale(x) 

y = np.array(data['proportion']) 

でApacheIIスコアを残してきた 'をY' ができるよう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_) 

次のように出力されます

[[-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] 

私はちょうど一般的ロジスティック回帰で使用されるシグモイド関数のパラメータを知りたいです。 S字状のパラメータ(つまり、切片と勾配)を見つけるにはどうすればよいですか?ここで

はシグモイド関数(参照が必要な場合)である:

def sigmoid(x, x0, k): 
    y = 1/(1 + np.exp(-k*(x-x0))) 
    return y 
+0

「割合」が連続変数である場合、私はこの問題についてロジスティック回帰ではなくリッジ回帰を探していると考えています。 –

+0

はい、あなたは正しい@GergesDibです。ありがとう。しかし、ここでは、ロジスティック関数のパラメータを調べるのに、それが最善の回帰モデルではないにもかかわらず、それを理解しようとしています。どんな助けもありがとうございます。 –

+0

私はあなたがすでにそれらを見つけたと思います。彼らは 'lr.coef_'と' lr.intercept_'です。どうしたの? –

答えて

1

これは、多項問題解決のためのロジスティック回帰の正常な動作です。 ルックthere:マルチクラス場合

は、学習アルゴリズムは、問題がバイナリである場合

intercept_形状(1)であるワンVSレスト (OVR)方式を使用します。

例:実際には

>>> 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 ]) 

異なるバイナリの問題を解決することを目指して、いくつかのモデルがあります。 i番目の係数とi番目の切片をマージすると、リストの最後までi番目のバイナリ問題を解くためのモデルが得られます。

関連する問題