编程语言
首页 > 编程语言> > python scikit中更快的数据拟合(或学习)功能

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

作者:互联网

我正在将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用于正负数据的组合或两者分别使用吗?我想必须将其组合使用,因为只有这样我们才能在测试集上使用缩放器参数.

解决方法:

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

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

标签:scikit-learn,machine-learning,classification,python
来源: https://codeday.me/bug/20191122/2059132.html