使用keras模型和sklearn库做机器学习任务

keras是python中比较流行的深度学习库,但是keras本身关注的是深度学习。而python中的scikit-learn库是建立在Scipy上的,有着比较有效的数值计算能力。sklearn是一个具有全特征的通用性的机器学习库,它提供了很多在深度学习中可以用到的工具。举个例子:

1.可以用sklearn中的k-fold交叉验证方法来对模型进行评估

2.模型参数的估计和寻找

Keras提供了深度学习模型的简便包装,可以在sklearn中被用来做分类和回归。在本片文章中,我们举这么一个例子:使用Keras建立神经网络分类器——KerasClassifier,并在scikit-learn库中使用这个分类器来对UCI的Pima Indians数据集进行分类。

利用Keras进行分类或者回归,主要是利用keras中的两个类,一个是KerasClassifier,另一个是KerasRegressor。这两个类带有参数build_fn。build_fn是你创建的keras模型的名称。在创建一个keras模型时,务必要把完成模型的定义,编译和返回。在这里我们假设我们建立的模型叫做create_model()

def create_model():
# create model
model = Sequential()
model.add(Dense(12, input_dim=8, init='uniform', activation='relu'))
model.add(Dense(8, init='uniform', activation='relu'))
model.add(Dense(1, init='uniform', activation='sigmoid'))
# Compile model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
return model

将建立好的模型通过参数build_fn传递到KerasClassifier中,并且定义其他的参数选项nb_epoch=150,batch_size=10.KerasClassifier会自动调用fit方法。

在sklearn中,我们使用它cross_validation的包中的StratifiedKFold来进行10折交叉验证,使用cross_val_score来对模型进行评价。

kfold = StratifiedKFold(y=Y, n_folds=10, shuffle=True, random_state=seed)
results = cross_val_score(model, X, Y, cv=kfold)

你可能感兴趣的:(使用keras模型和sklearn库做机器学习任务)