【发布时间】:2019-11-29 18:46:03
【问题描述】:
我正在尝试复制 here 所做的工作:
该项目的目标是建立一个逻辑机器学习模型来预测投资失败与否的概率。
sklearn部分代码如下:
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import Imputer, StandardScaler
from sklearn.model_selection import GridSearchCV
from sklearn.linear_model import SGDClassifier
pipeline_sgdlogreg = Pipeline([
('imputer', Imputer(copy=False)), # Mean imputation by default
('scaler', StandardScaler(copy=False)),
('model', SGDClassifier(loss='log', max_iter=1000, tol=1e-3, random_state=1, warm_start=True))
])
param_grid_sgdlogreg = {
'model__alpha': [10**-5, 10**-2, 10**1],
'model__penalty': ['l1', 'l2']
}
grid_sgdlogreg = GridSearchCV(estimator=pipeline_sgdlogreg, param_grid=param_grid_sgdlogreg,
scoring='roc_auc', n_jobs=-1, pre_dispatch='2*n_jobs', cv=5,
verbose=1, return_train_score=False)
grid_sgdlogreg.fit(X_train, y_train)
GridSearchCV(cv=5, error_score='raise',
estimator=Pipeline(memory=None,
steps=[('imputer', Imputer(axis=0, copy=False, missing_values='NaN', strategy='mean', verbose=0)),
('scaler', StandardScaler(copy=False, with_mean=True, with_std=True)),
('model', SGDClassifier(alpha=0.0001, average=False, class_weight=None, epsilon=0.1,
penalty='l2', power_t=0.5, random_state=1, shuffle=True,
tol=0.001, verbose=0, warm_start=True))]),
fit_params=None, iid=True, n_jobs=-1,
param_grid={'model__alpha': [1e-05, 0.01, 10], 'model__penalty': ['l1', 'l2']},
pre_dispatch='2*n_jobs', refit=True, return_train_score=False,
scoring='roc_auc', verbose=1)
grid_sgdlogreg.best_score_
grid_sgdlogreg.best_params_
我在训练集中有大约 200000 行数据。初始运行 6 小时后没有产生任何结果或消息。
将我的训练集减少到 100 行,模型在大约 9 秒内运行。 200 行似乎无休止地运行。
在我尝试复制的 python 笔记本示例中,训练集有 730000 行,运行只用了 3.3 分钟。
我在具有 16 GB 内存的 8 核 i7 上并行运行。
我猜我需要对数据进行额外的预处理,但不知道从哪里开始。我应该在我的数据中查找哪些可能导致此问题的内容?
【问题讨论】:
标签: scikit-learn logistic-regression