获取LinAlgError:相同数据和代码上的奇异矩阵错误

时间:2019-06-20 15:37:17

标签: python scikit-learn logistic-regression statsmodels google-cloud-datalab

我正在尝试使用sklearn和statsmodel在python中建立逻辑回归模型。但是我得到了奇异矩阵错误。我的数据集包含273个变量,目标分别为80 20。初始数据有30个变量,我为分类变量创建了虚拟变量。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation",
                "s3:ListAllMyBuckets",
                "s3:CreateBucket"
            ],
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutBucketPublicAccessBlock",
                "s3:PutEncryptionConfiguration",
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::xyz*",
                "arn:aws:s3:::xyz*/*"
            ]
        }
    ]
}

我使用SMOTE对少数类进行了过度采样,并得到了50/50的分割,因为它仅预测零。该功能昨天运行良好。今天,我得到了具有相同数据和代码的奇异矩阵错误。

因此,我将样本的目标比例更改为90/10,并将假人设置更改为

 df2 = pd.get_dummies(df,dummy_na=False,drop_first=False)

这很好,但是我遇到了不均衡的样本问题,它在预测多数派。因此,如果我再次使用SMOTE进行采样,则会出现奇异矩阵错误。

我想了解造成问题或包装本身的假人是如何创建的。当我第一次遇到80-20分割的奇异矩阵错误时,我做了以下操作以消除错误,我将假人功能从更改为

df2 = pd.get_dummies(df,dummy_na=False,drop_first=True)

df2 = pd.get_dummies(df,dummy_na=True,drop_first=True)

并升级了statsmodel包

df2 = pd.get_dummies(df,dummy_na=False,drop_first=False)</i>

这有效。现在,某些相同的更改不起作用。

!pip install statsmodels -U

0 个答案:

没有答案