Я пишу сценарий, в котором я создаю данные, которые зависят от нескольких параметров / методов расчета.Я буду сравнивать полученные данные, когда они различаются, поэтому необходимо отслеживать их все.Слишком много деталей, чтобы просто «использовать описательное имя файла».
Я хотел бы: экспортировать в 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 для новой строки в экспортированном файле, для читабельности. ... для читабельности в сценарии, который я пишу, поэтомуэто не все в одной строке. Я также не уверен, как экспортировать и текстовый компонент, и массив. Данные, которые я пытаюсь экспортировать из приведенного выше кода, это массив «Ошибки» и вектор ».тета.