我正在研究一个python包,该包在一个类下使用多个函数,并且希望访问这些类的函数变量之一。如果可能的话,我该怎么做?
我已经将类和函数分解为单个代码段,但是考虑到程序包,我是否有办法将类称为隐藏类?
call read('generateDocument.feature@generatedoc') { userId: 'abc456'}
我想可以打电话
'def fit_scores(self, balance=True, nmodels=None):
"""
Fits logistic regression model(s) used for
generating propensity scores
Parameters
----------
balance : bool
Should balanced datasets be used?
(n_control == n_test)
nmodels : int
How many models should be fit?
Score becomes the average of the <nmodels> models if nmodels > 1
Returns
-------
None
"""
# reset models if refitting
if len(self.models) > 0:
self.models = []
if len(self.model_accuracy) > 0:
self.model_accuracy = []
if not self.formula:
# use all columns in the model
self.formula = '{} ~ {}'.format(self.yvar, '+'.join(self.xvars))
if balance:
if nmodels is None:
# fit multiple models based on imbalance severity (rounded up to nearest tenth)
minor, major = [self.data[self.data[self.yvar] == i] for i in (self.minority, self.majority)]
nmodels = int(np.ceil((len(major) / len(minor)) / 10) * 10)
self.nmodels = nmodels
i = 0
errors = 0
while i < nmodels and errors < 5:
uf.progress(i+1, nmodels,
prestr="Fitting Models on Balanced Samples")
# sample from majority to create balance dataset
df = self.balanced_sample()
df = pd.concat([uf.drop_static_cols(df[df[self.yvar] == 1], yvar=self.yvar),
uf.drop_static_cols(df[df[self.yvar] == 0], yvar=self.yvar)])
y_samp, X_samp = patsy.dmatrices(self.formula, data=df, return_type='dataframe')
X_samp.drop(self.yvar, axis=1, errors='ignore', inplace=True)
glm = GLM(y_samp, X_samp, family=sm.families.Binomial())
try:
res = glm.fit()
self.model_accuracy.append(self._scores_to_accuracy(res, X_samp, y_samp))
self.models.append(res)
i += 1
except Exception as e:
errors += 1 # to avoid infinite loop for misspecified matrix
print('Error: {}'.format(e))
print("\nAverage Accuracy:", "{}%".
format(round(np.mean(self.model_accuracy) * 100, 2)))
else:
# ignore any imbalance and fit one model
print('Fitting 1 (Unbalanced) Model...')
glm = GLM(self.y, self.X, family=sm.families.Binomial())
res = glm.fit()
self.model_accuracy.append(self._scores_to_accuracy(res, self.X, self.y))
self.models.append(res)
print("\nAccuracy", round(np.mean(self.model_accuracy[0]) * 100, 2))'
,以便我可以访问res
或statsmodel软件包的任何其他部分。