6

論理回帰を計算してみました。私はcsvファイルとしてデータを持っています。のように見える

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
..........................

これは私のコーディングです。

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()

Python でコーディングを実行すると、エラーが発生しました。

Traceback (most recent call last):
File "D:\project\logisticregression.py", line 24, in <module>
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

コードを書き直すには?

4

1 に答える 1

8

コードに問題はありません。私の推測では、データに欠損値があると思います。dropnaまたは Logit を使用してみてくださいmissing='drop'。右辺がフルランクであることを確認することもできますnp.linalg.matrix_rank(data[train_cols].values)

于 2013-06-14T13:20:25.510 に答える