首页 文章

python scikit中更快的数据拟合(或学习)功能

提问于
浏览
3

我正在使用scikit进行机器学习 . 虽然我按照官方文档中提到的完全按照步骤操作,但我遇到了两个问题 . 这是代码的主要部分:

1)trdata是使用sklearn.train_test_split创建的训练数据 . 2)ptest和ntest分别是阳性和阴性的测试数据

## Preprocessing

scaler = StandardScaler(); scaler.fit(trdata);

trdata = scaler.transform(trdata)
ptest = scaler.transform(ptest); ntest = scaler.transform(ntest)



## Building Classifier

# setting gamma and C for grid search optimization, RBF Kernel and SVM classifier

crange = 10.0**np.arange(-2,9); grange = 10.0**np.arange(-5,4)
pgrid = dict(gamma = grange, C = crange)
cv = StratifiedKFold(y = tg, n_folds = 3)

## Threshold Ranging

clf = GridSearchCV(SVC(),param_grid = pgrid, cv = cv, n_jobs = 8)


## Training Classifier: Semi Supervised Algorithm

clf.fit(trdata,tg,n_jobs=8)

问题1)当我在GridSearchCV中使用n_jobs = 8时,代码会一直运行到GridSearchCV,但是挂起或者说需要花费相当长的时间而不会导致执行'clf.fit',即使对于非常小的数据集也是如此 . 当我删除它然后执行,但clf.fit需要很长时间来收敛大数据集 . 对于正面和负面,我的数据大小为600 x 12矩阵 . 你能告诉我n_jobs究竟会做什么以及应该如何使用它?还有哪些更快的拟合技术或代码修改可以应用于使其更快?

问题2)StandardScaler也应该用于正面和负面数据的组合或分别用于两者?我想它必须结合使用,因为只有我们可以在测试集上使用缩放器参数 .

1 回答

  • 3

    SVC似乎对未规范化的数据非常敏感,您可以尝试通过以下方式规范化数据:

    from sklearn import preprocessing
    trdata = preprocessing.scale(trdata)
    

相关问题