Я пытаюсь найти вероятность дефолта для моделирования кредитного риска. Я попытался найти p-значения, используя этот код, но получаю ошибку, указанную ниже. Не могли бы вы проверить и предложить мне.
from sklearn import linear_model
import scipy.stats as stat
class LogisticRegression_with_p_values:
def __init__(self,*args,**kwargs):
self.model = linear_model.LogisticRegression(*args,**kwargs)
def fit(self,X,y):
self.model.fit(X,y)
denom = (2.0 * (1.0 + np.cosh(self.model.decision_function(X))))
denom = np.tile(denom,(X.shape[1],1)).T
F_ij = np.dot((X / denom).T,X) ## Fisher Information Matrix
Cramer_Rao = np.linalg.inv(F_ij) ## Inverse Information Matrix
sigma_estimates = np.sqrt(np.diagonal(Cramer_Rao))
z_scores = self.model.coef_[0] / sigma_estimates # z-score for eaach model coefficient
p_values = [stat.norm.sf(abs(x)) * 2 for x in z_scores] ### two tailed test for p-values
self.z_scores = z_scores
self.p_values = p_values
self.sigma_estimates = sigma_estimates
self.F_ij = F_ij
self.coef_ = self.model.coef_
self.intercept_ = self.model.intercept_
self.p_values = p_values
reg = LogisticRegression_with_p_values()
reg.fit(inputs_train, loan_data_targets_train)
Результат вывода: Здесь я получаю ошибку, подобную приведенной ниже. Пожалуйста, проверьте и предложите мне
---------------------------------------------------------------------------
LinAlgError Traceback (most recent call last)
<ipython-input-25-94eedca582e4> in <module>
----> 1 reg.fit(inputs_train, loan_data_targets_train)
<ipython-input-23-ba71be0f295c> in fit(self, X, y)
12 denom = np.tile(denom,(X.shape[1],1)).T
13 F_ij = np.dot((X / denom).T,X) ## Fisher Information Matrix
---> 14 Cramer_Rao = np.linalg.inv(F_ij) ## Inverse Information Matrix
15 sigma_estimates = np.sqrt(np.diagonal(Cramer_Rao))
16 z_scores = self.model.coef_[0] / sigma_estimates # z-score for eaach model coefficient
~\Anaconda3\lib\site-packages\numpy\linalg\linalg.py in inv(a)
549 signature = 'D->D' if isComplexType(t) else 'd->d'
550 extobj = get_linalg_error_extobj(_raise_linalgerror_singular)
--> 551 ainv = _umath_linalg.inv(a, signature=signature, extobj=extobj)
552 return wrap(ainv.astype(result_t, copy=False))
553
~\Anaconda3\lib\site-packages\numpy\linalg\linalg.py in _raise_linalgerror_singular(err, flag)
95
96 def _raise_linalgerror_singular(err, flag):
---> 97 raise LinAlgError("Singular matrix")
98
99 def _raise_linalgerror_nonposdef(err, flag):
LinAlgError: Singular matrix```