得到一个线性误差:奇异矩阵问题。如何解决?

2024-04-19 23:35:56 发布

您现在位置:Python中文网/ 问答频道 /正文

尝试对选举数据集进行逻辑回归This is the dataset。其想法是使用数据集预测选举结果。当您建立一个简单的线性回归模型时,代码运行良好。然而,当你使用逻辑回归模型时,它不起作用。唯一有效的方法是删除“年份”列。在不删除“年份”列的情况下,是否有解决此问题的方法?下面是代码

import pandas as pd
import numpy as np
import statsmodels.formula.api as sm

election_data = pd.read_csv(r"C:\Users\Desktop\LogisticRegression\election_data\election_data.csv")

df = election_data.rename({'Amount Spent' : 'Amount_spent', 'Popularity Rank':'Popularity_Rank'}, axis = 1)
df1 = df.drop('Election-id', axis = 1)
simple_model = sm.ols('Result ~ Year + Amount_spent + Popularity_Rank', data = df1).fit()
simple_model.summary()
logit_model = sm.logit('Result ~  + Year + Amount_spent + Popularity_Rank', data = df1).fit()
logit_model.summary()

logit_model = sm.logit('Result ~  + Year + Amount_spent + Popularity_Rank', data = df1).fit()
Warning: Maximum number of iterations has been exceeded.
         Current function value: inf
         Iterations: 35
Traceback (most recent call last):

  File "<ipython-input-20-632757304aa5>", line 1, in <module>
    logit_model = sm.logit('Result ~  + Year + Amount_spent + Popularity_Rank', data = df1).fit()

  File "C:\Users\adi07\anaconda3\envs\tensorflow_env\lib\site-packages\statsmodels\discrete\discrete_model.py", line 1963, in fit
    bnryfit = super().fit(start_params=start_params,

  File "C:\Users\adi07\anaconda3\envs\tensorflow_env\lib\site-packages\statsmodels\discrete\discrete_model.py", line 227, in fit
    mlefit = super().fit(start_params=start_params,

  File "C:\Users\adi07\anaconda3\envs\tensorflow_env\lib\site-packages\statsmodels\base\model.py", line 534, in fit
    Hinv = np.linalg.inv(-retvals['Hessian']) / nobs

  File "<__array_function__ internals>", line 5, in inv

  File "C:\Users\adi07\anaconda3\envs\tensorflow_env\lib\site-packages\numpy\linalg\linalg.py", line 546, in inv
    ainv = _umath_linalg.inv(a, signature=signature, extobj=extobj)

  File "C:\Users\adi07\anaconda3\envs\tensorflow_env\lib\site-packages\numpy\linalg\linalg.py", line 88, in _raise_linalgerror_singular
    raise LinAlgError("Singular matrix")

LinAlgError: Singular matrix

这就是我得到的错误。你知道在这种情况下可以做什么吗


Tags: indatamodellineamountusersfitfile