【问题标题】:Computer freezing whenever I use fitted model summary每当我使用拟合模型摘要时计算机冻结
【发布时间】:2021-05-10 23:32:44
【问题描述】:

我正在为一个学校项目进行逻辑回归。在我训练数据并尝试执行拟合模型摘要之后,具体而言

fitted_model = linear_regression.fit()

只是运行,运行,运行,直到浏览器冻结。我让它运行了二十分钟。我认为数据并没有那么大,因为它只有 10,000 行数据(同样,我是学生,所以如果我错了,请纠正我)。也就是说,我在许多列上使用了 getdummies,目前有 18,000 列。但是,我看到了这个帖子,如果我没看错的话,它应该仍然可以运行(How many features can scikit-learn handle?) ] 在我从头开始之前有什么建议吗?

下面是更多代码,以防万一。

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

【问题讨论】:

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

标签: python logistic-regression statsmodels


【解决方案1】:

尝试减少您拥有的样本数量,看看您的代码是否仍然运行,以及需要多长时间。把它放在你的代码 sn-p 之前应该可以工作:

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 分钟可能是合理的,具体取决于每个数据点的特征数量。如果每个数据点有 1 个特征,那么只有 10000 个数字,数量不多;但如果每个点有 1000 个特征,那么你就有 10000*1000 个数据点——这完全是另一回事。

【讨论】:

    猜你喜欢
    • 2019-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-14
    • 1970-01-01
    • 2019-02-22
    • 2020-03-26
    • 1970-01-01
    相关资源
    最近更新 更多