Экспорт массива (чтобы использовать для построения) * и * аннотации / пояснительный текст из скрипта Python - PullRequest
0 голосов
/ 06 июля 2019

Я пишу сценарий, в котором я создаю данные, которые зависят от нескольких параметров / методов расчета.Я буду сравнивать полученные данные, когда они различаются, поэтому необходимо отслеживать их все.Слишком много деталей, чтобы просто «использовать описательное имя файла».

Я хотел бы: экспортировать в CSV-файлы данных, которые упрощают их загрузку и печать в более позднее время.и для файлов, чтобы также иметь описательные аннотации, которые не мешают мне просто загрузить файл для печати. ​​

Я рассмотрел: экспорт текстового файла, который является точно сценариемдля построения, с аннотациями.Проблема в том, что есть некоторые функции, которые я хочу отследить для себя, но я не хочу появляться на своих графиках.

Вместо этого я подумал, что могу распечатать на основе тестас '#' в тексте перед моими аннотациями, так что, надеюсь, это не будет прочитано?Я также рассмотрел файл данных pandas, но я не думаю, что это уместно, поскольку должна быть размерная согласованность включенных списков / массивов, а количество / тип аннотаций будет варьироваться от сценария к сценарию для меня.

Код

В случае, если может быть проще увидеть фактический код, который я реализую:

#Script for producing y data from p covariates from a specified distribution, specified theta paraemters,
#and n data samples for gaussian function.

import numpy as np
import pandas as pd



#For producing y data values given true paramters theta and number of covariates
def gaussian_data(n,p, theta):
    #Define parameters

    #1)Number of covariates
    p_i = p+1  #with intercept
    p_i=np.int(p_i)

    #2) m as correct data type
    n=np.int(n)

    #3)Link function
    def g(z):
        return z

    #4)Specify parameter valueas to be estimated
    theta=np.reshape(theta, (p_i,1))

    #5)Define distribution from which covariate values are drawn i.i.d., and initiate data values
    X=np.zeros((n,p_i))
    X[:,0]=1    #intercept
    mean=0
    sigma=1.5

    X[:,1:]=np.random.normal(mean,sigma,(n,p))


    #6)Specify Gaussian error distribution for data values y
    eta=np.asarray(np.random.normal(0,0.4,n))
    eta=np.reshape(eta, (n,1))


    #7)Produce data values
    y=g(X.dot(theta))+eta

    return X, y





#Finding beta given X, y from the normal equation, assuming n>p and columns of X (the covariates) are
#linearly independent.
def NormalEquationGaussian(X,y):
    A=np.linalg.pinv(X.transpose().dot(X))
    beta=A.dot(X.transpose().dot(y))
    return beta






#Main control

#1)Sample numbers to test for erros in beta, as powers of 10.
npowers=np.arange(1,4,1)

n=np.power(10,npowers)

#2)Number of independent covariates
p=5

#3)True theta to be estimated (parameter values)
theta=np.asarray([1,1.2,1.1,0.8,0.9,1.3])

#4)#Initiate arrays for estimates of theta (and errors) at specified sample numbers in vector n
Thetas=np.zeros((len(npowers),p+1))

Errors=np.zeros((len(npowers),p+1))

#5)Obtain random covariate values from specified distribution, and corresponding y values using true theta
#plus gaussian noise term.
X,y = gaussian_data(n[-1],p,theta)

#6)Calulcate cumulative means for given n values, for the theta estimates
for ind,N in enumerate(n):
    theta=NormalEquationGaussian(X[0:N,:],y[0:N])
    Thetas[ind,:] = np.reshape(theta,6)

#7)Calculate true erros 
Errors=Thetas-theta

#8)Save data as csv


#9)Plots

И что я имел в виду для экспортируемогоfile:

print('#No of covariates p= %s \n' %p, '\n #Covariate distribution: i.i.d. X_i ~ N(0,1.5) \n #True theta vector: ', theta, ...
      '\n #Sample values n =', n, '\n #Error dist for y, i.i.d eta ~N(0,0.4,n)', '\n #Link function: g(z)=z',...
      '\n #Finding estimator method: Normal equation')

Хотя здесь синтаксис кажется неправильным (\ n для новой строки в экспортированном файле, для читабельности. ... для читабельности в сценарии, который я пишу, поэтомуэто не все в одной строке. Я также не уверен, как экспортировать и текстовый компонент, и массив. Данные, которые я пытаюсь экспортировать из приведенного выше кода, это массив «Ошибки» и вектор ».тета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...