python对逻辑回归进行显著性_在python中计算逻辑回归

I tried to calculate logical regression. I have the data as csv file.

it looks like

node_id,second_major,gender,major_index,year,dorm,high_school,student_fac

0,0,2,257,2007,111,2849,1

1,0,2,271,2005,0,51195,2

2,0,2,269,2007,0,21462,1

3,269,1,245,2008,111,2597,1

..........................

This is my coding.

import pandas as pd

import statsmodels.api as sm

import pylab as pl

import numpy as np

df = pd.read_csv("Reed98.csv")

print df.describe()

dummy_ranks = pd.get_dummies(df['second_major'], prefix='second_major')

cols_to_keep = ['second_major', 'dorm', 'high_school']

data = df[cols_to_keep].join(dummy_ranks.ix[:, 'year':])

train_cols = data.columns[1:]

# Index([gre, gpa, prestige_2, prestige_3, prestige_4], dtype=object)

logit = sm.Logit(data['second_major'], data[train_cols])

result = logit.fit()

print result.summary()

When I run the coding in python I got an error:

Traceback (most recent call last):

File "D:\project\logisticregression.py", line 24, in

result = logit.fit()

File "c:\python26\lib\site-packages\statsmodels-0.5.0-py2.6- win32.egg\statsmodels\discrete\discrete_model.py", line 282, in fit

disp=disp, callback=callback, **kwargs)

File "c:\python26\lib\site-packages\statsmodels-0.5.0-py2.6- win32.egg\statsmodels\discrete\discrete_model.py", line 233, in fit

disp=disp, callback=callback, **kwargs)

File "c:\python26\lib\site-packages\statsmodels-0.5.0-py2.6- win32.egg\statsmodels\base\model.py", line 291, in fit

hess=hess)

File "c:\python26\lib\site-packages\statsmodels-0.5.0-py2.6-win32.egg\statsmodels\base\model.py", line 341, in _fit_mle_newton

newparams = oldparams - np.dot(np.linalg.inv(H),

File "C:\Python26\Lib\site-packages\numpy\linalg\linalg.py", line 445, in inv

return wrap(solve(a, identity(a.shape[0], dtype=a.dtype)))

File "C:\Python26\Lib\site-packages\numpy\linalg\linalg.py", line 328, in solve

raise LinAlgError('Singular matrix')

LinAlgError: Singular matrix

How to rewrite the code?

解决方案

There's nothing wrong with your code. My guess is that you have missing values in your data. Try a dropna or use missing='drop' to Logit. You might also check that the right hand side is full rank np.linalg.matrix_rank(data[train_cols].values)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
逻辑回归是一种二分类模型,它通过将输入特征与其对应的权重进行加权求和,并通过一个逻辑函数(如sigmoid函数)来预测输入样本的概率分布。Python有很多常用的机器学习包可以实现逻辑回归,如Scikit-learn和Statsmodels。 1. Scikit-learn包逻辑回归模型是非常常用和简单的。可以使用LinearRegression类来实现逻辑回归。首先,可以使用fit方法将训练数据拟合到模型,然后使用predict方法来预测新的样本。此外,Scikit-learn还提供了一些评估指标来评估模型的性能,如准确率、精确率、召回率等。 2. Statsmodels包逻辑回归模型也是很常用的。可以使用sm.Logit函数来创建一个逻辑回归模型对象,然后使用fit方法拟合数据,并使用predict方法来进行预测。Statsmodels还可以输出拟合结果的摘要统计信息,以及模型的显著性检验等。 无论选择哪个包,逻辑回归模型的使用步骤主要包括数据预处理、模型拟合和模型评估。在数据预处理阶段,需要对数据进行特征选择、缺失值处理和数据标准化等操作。在模型拟合阶段,需要选择合适的参数和超参数,并将训练数据拟合到模型。在模型评估阶段,可以使用交叉验证或留出法来评估模型的性能,并选择最佳模型。 总的来说,逻辑回归是一种简单而有效的二分类模型,在Python可以使用Scikit-learn和Statsmodels等常用包来实现。正确地使用逻辑回归模型可以帮助我们解决许多实际问题,如垃圾邮件过滤、信用评分等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值