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

时间:2013-12-16 07:02:45

标签: python machine-learning classification scikit-learn

我正在使用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 个答案:

答案 0 :(得分:3)

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

from sklearn import preprocessing
trdata = preprocessing.scale(trdata) 
相关问题