【问题标题】:LinAlgError: Singular matrix error while building logistic regression model with p-valuesLinAlgError:使用 p 值构建逻辑回归模型时出现奇异矩阵误差
【发布时间】:2020-05-23 21:44:58
【问题描述】:

我正在使用以下函数来计算 p 值来构建拟合逻辑回归模型。
但我得到 LinAlgError:奇异矩阵错误

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)
      Cramer_Rao = np.linalg.inv(F_ij)
      sigma_estimates = np.sqrt(np.diagonal(Cramer_Rao))
      z_scores = self.model.coef_[0] / sigma_estimates
      p_values = [stat.norm.sf(abs(x)) * 2 for x in z_scores]
      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)

PS:两个数据集(inputs_train、loan_data_targets_train)是不同的。
但是,我仍然得到 LinAlgError: Singular matrix error。 请帮忙。

【问题讨论】:

标签: python-3.x logistic-regression


【解决方案1】:

原因是您的某一列的值全为零,这就是它在逆变换时失败的原因。我遇到了这个问题,我就是这样解决的,方法是删除全零的列。

【讨论】:

    猜你喜欢
    • 2021-01-30
    • 2020-02-22
    • 2016-12-20
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    • 2020-09-15
    • 2018-07-14
    • 2016-05-18
    相关资源
    最近更新 更多