我正在尝试使用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