使用scikit-learn对模型进行比较
来源:互联网 发布:未格式化数据恢复 编辑:程序博客网 时间:2024/06/09 12:23
scikit-learn封装(wrapper)两种库来对进行分类
一种为KerasClassifier ,一种为KerasRegress
本例使用第一种分类器模型
通过使用build_in函数,为其传递一个训练模型,然后对结果进行评估
在这里,可以将我们的模型定义为一个函数,然后返回一个编译后的模型,该模型将作为参数传递给build_in函数
和使用fit()函数一样,该函数还接受epochs和batch_size参数
最终使用cross_val_score()函数来对模型进行评估,并打印出平均值
对模型进行比较:
在create_model()函数创建时,可以为其提供两个参数,分别为optimizer和init,这两个参数分别指定了优化器和初始化核
然后通过字典的形式,分别对这两个参数进行选择,最终可以生成不同的模型,从而进行比较
这里的optimizer可以选择参数 :rmsprop和adam
init参数可以选择:glorot_uniform ,normal, uniform
epochs可以选择:50,100,150
batch_size可以选择5,10,20
这样,通过不同的搭配,可以生成2*3*3*3种模型
最终,每个模型再使用3层的交叉验证,这样,就可以进行最终的模型对比评估
不过,这种方法使用于数据集比较小,特征比较少的情况,不然时间开销会很大
# MLP for Pima Indians Dataset with grid search via sklearnfrom keras.models import Sequentialfrom keras.layers import Densefrom keras.wrappers.scikit_learn import KerasClassifierfrom sklearn.model_selection import GridSearchCVimport numpy# Function to create model, required for KerasClassifierdef create_model(optimizer='rmsprop', init='glorot_uniform'):# create modelmodel = Sequential()model.add(Dense(12, input_dim=8, kernel_initializer=init, activation='relu'))model.add(Dense(8, kernel_initializer=init, activation='relu'))model.add(Dense(1, kernel_initializer=init, activation='sigmoid'))# Compile modelmodel.compile(loss='binary_crossentropy', optimizer=optimizer, metrics=['accuracy'])return model# fix random seed for reproducibilityseed = 7numpy.random.seed(seed)# load pima indians datasetdataset = numpy.loadtxt("pima-indians-diabetes.csv", delimiter=",")# split into input (X) and output (Y) variablesX = dataset[:,0:8]Y = dataset[:,8]# create modelmodel = KerasClassifier(build_fn=create_model, verbose=0)# grid search epochs, batch size and optimizeroptimizers = ['rmsprop', 'adam']init = ['glorot_uniform', 'normal', 'uniform']epochs = [50, 100, 150]batches = [5, 10, 20]param_grid = dict(optimizer=optimizers, epochs=epochs, batch_size=batches, init=init)grid = GridSearchCV(estimator=model, param_grid=param_grid)grid_result = grid.fit(X, Y)# summarize resultsprint("Best: %f using %s" % (grid_result.best_score_, grid_result.best_params_))means = grid_result.cv_results_['mean_test_score']stds = grid_result.cv_results_['std_test_score']params = grid_result.cv_results_['params']for mean, stdev, param in zip(means, stds, params):print("%f (%f) with: %r" % (mean, stdev, param))
代码来源:https://machinelearningmastery.com/use-keras-deep-learning-models-scikit-learn-python/
阅读全文
0 0
- 使用scikit-learn对模型进行比较
- Scikit-learn中使用SVM对文本进行分类
- 使用scikit-learn的随机森林对西瓜进行分类
- scikit-learn进行模型参数的选择
- 使用scikit-learn进行机器学习(scikit-learn教程1)
- 使用scikit-learn进行音乐分类
- 使用scikit-learn进行文本分类
- 【scikit-learn】01:使用案例对sklearn库进行简单介绍
- 【scikit-learn】如何进行模型参数的选择
- 【scikit-learn】如何进行模型参数的选择
- scikit-learn对天气数据进行回归分析
- Scikit-learn 秘籍 第四章 使用 scikit-learn 对数据分类
- Scikit-learn 秘籍 第三章 使用距离向量构建模型
- scikit-learn 常用模型介绍及使用(上)
- scikit-learn 常用模型介绍及使用(下)
- 使用scikit-learn进行机器学习的简介(教程1)
- 【scikit-learn】02:使用sklearn库进行统计学习
- 使用scikit-learn进行机器学习的简介(教程1)
- MATLAB图像处理基础知识1 imhist
- verilog的取余和除法
- 对C++的atoi(),substr(),c_str()函数的理解
- VMware及Linux的安装
- 深入 HTML5 Web Worker 应用实践:多线程编程
- 使用scikit-learn对模型进行比较
- html和CSS基础学习(十二)
- 时间复杂度
- varargin/nargin
- 1009. 说反话 (20)
- MATLAB图像处理基础知识2 im2bw
- 9月23号总结
- 20.Valid Parentheses 栈的应用:括号匹配
- Python(Mac版)通过PyCharmCE2017.1.2安装各种第三方包(以pygame为例)