2016-03-20 28 views
1

İstatistikler dizisinde bir dizi lojistik regresyon yazdırmaya çalışıyorum, ancak sonuçları konsol ekranından başka bir şeye nasıl yazdıracağım konusunda emin değilim. Verilerin veri kümesi olduğu regresyonları çalıştıran bir işlev oluşturdum ve diğer değişkenler veri kümesinden kukla değişken etiketlerinin bir dizi listesidir (eminim ki, bununla birlikte çalışmanın en verimli yolu değil, ama Ben var3 9 kukla var 2'den değişkenler ve 15) ile için regresyon çalıştırmak istediğiniz 5 bağımlı değişkenleri olduğunda çalışır ve mantıklıydı: Neysestatsmodels python içinde çok sayıda lojistik regresyon yazdırmaya çalışıyor

def regression(data, var1, var2, var3): 
    for var in var 2: 
     for var in var1: 
      for var in var3: 
       f = '%s ~ %s * %s' % (var1, var2, var3) 
       y, x = patsy.dmatrices(f, data, return_type = 'dataframe') 
       result = sm.Logit(y,x).fit() 
       print(result.summary()) 
       print(np.exp(result.params)) 

- Ben baskıya çıktı almaya çalışıyorum konsoldan başka bir şeye, onu kaydedebilir ve önemli sonuçlar için geçebilirim. Bahse girerim cevap zor değildir, ancak python ve statsmodels için yeniyim ve statsmodels belgelerinde veya stackoverflow'ta yeterince açık bir şey görmedim. Teşekkürler

+0

'açık (" outfile-name.txt "," w ") dışarıda olduğu gibi: sys.stdout = out ...' – zondo

+0

@zondo: Sanırım sys'e yazmak iyi bir fikir değil:/ –

+0

@NeilG: Bu doğru. Ne dediğini bile bilmiyordum * dedi. Her 'print()' çağrısını değiştirdiğiniz sürece, neden 'print (..., out = fileobject)' yerine 'fileobject.write (...)' yi kullanmayın? – zondo

cevap

1

Eğer .write() dosyasını açmak ve kullanabilirsiniz:

def regression(...): 
    with open("outfile") as out: 
     for var in var 2: 
      for var in var1: 
       for var in var3: 
        ... 
        out.write(str(result.summary()) + "\n") 
        out.write(str(np.exp(result.params)) + "\n) 

@ gibi NeilG dikkat çekti, print(result.summary(), out=out)'u da kullanabilirsiniz. Bu, out.write(str(...) + "\n") için kısayol olabilir. result.summary() ve np.exp(result.params)'u ayrı dosyalara koymak isterseniz, with open("summary", "w") as summary, open("params", "w") as params: kullanın ve summary ve out yerine params kullanın.

+0

İnsan - python'a daha çok yaklaştığımda, bu kadar çok cevabın ne kadar basit olduğunu bulmaya devam ediyorum. teşekkür ederim! – MikeD

0

@zondo ne diyor ve bir dosya açıyorsa onu yapın. Ardından, dosya tanıtıcısını print'a out parametresi olarak iletin.

1

böyle bir şey denemek istiyorum: Bir dosyaya yerine Stdout'a yazmak istiyorsanız,

with open("summary.txt", "w") as f: 
    f.write(result.summary) 
with open("params.txt", "w") as f: 
    f.write(np.exp(result.params))