Python 无论何时使用fitted model summary,计算机都会冻结

Python 无论何时使用fitted model summary,计算机都会冻结,python,logistic-regression,statsmodels,Python,Logistic Regression,Statsmodels,我正在为一个学校项目做逻辑回归。在我训练数据并尝试执行拟合模型摘要后,特别是 fitted_model = linear_regression.fit() 只运行一次又一次,直到浏览器冻结。我让它运行了二十分钟。在我看来,数据并没有那么大,因为它只有10000行数据(同样,我是一名学生,如果我错了,请纠正我)。也就是说,我在许多专栏上使用了getdummies,目前有18000个专栏。但是,我看到了这个线程,如果我读对了,它应该运行正常() ] 在我从头开始之前有什么建议吗 下面是更多的代码,

我正在为一个学校项目做逻辑回归。在我训练数据并尝试执行拟合模型摘要后,特别是

fitted_model = linear_regression.fit()
只运行一次又一次,直到浏览器冻结。我让它运行了二十分钟。在我看来,数据并没有那么大,因为它只有10000行数据(同样,我是一名学生,如果我错了,请纠正我)。也就是说,我在许多专栏上使用了getdummies,目前有18000个专栏。但是,我看到了这个线程,如果我读对了,它应该运行正常() ] 在我从头开始之前有什么建议吗

下面是更多的代码,以防有用

from sklearn.linear_model import LogisticRegression

logreg=LogisticRegression()
logreg.fit(X_train, y_train)

y_hat_train=logreg.predict(X_train)
y_hat_test = logreg.predict(X_test)

from sklearn.metrics import classification_report
print(classification_report(y_test,y_hat_test))

import statsmodels.api as sm
import statsmodels.formula.api as smf
Xc = sm.add_constant(X_train)
linear_regression = sm.OLS(y_train,Xc)
fitted_model = linear_regression.fit()
fitted_model.summary()

尽量减少样本数量,看看代码是否仍在运行,以及需要多长时间。将此放在代码段之前应该可以:

n_train = 100
n_test = 10
X_train = X_train[:n_train]
y_train = y_train[:n_train]
X_test = X_test[:n_test]
y_test = y_test[:n_test]

作为旁注,听起来您的数据太多了。>根据每个数据点的特征数量,10000个数据点20分钟是合理的。如果每个数据点有一个特征,那么只有10000个数字,这并不多;但如果每个点有1000个功能,那么就有10000*1000个数据点——这完全是另一回事。

您提到了sklearn和sklearn特定算法的复杂性。不过,您的代码也使用statsmodels!添加打印(或更聪明的东西)以识别问题是否在sklearn fitting、reporting或后续statsmodels代码中出现。就statsmodels
sm.OLS
而言,我猜它是~O(n*m^2)-复杂性,
10000*18000^2
需要进行大量计算!备注:在这些情况下,第一步总是减少数据,看看会发生什么。在这种情况下,您还可以添加一些计时,显示哪些部分是瓶颈。您希望从包含18000个参数的摘要中看到什么?那有很多页要读。我想所有的时间都花在了汇总表的格式上。此外,您的参数比观察值多,因此推断将没有用处。参数的协方差矩阵为18K×18K。