keras入门-简单数据集的运用
来源:互联网 发布:竹笛模拟软件安卓版 编辑:程序博客网 时间:2024/05/16 03:15
Keras:
Keras是一个高层神经网络API,Keras由纯Python编写而成并基Tensorflow、Theano以及CNTK后端。Keras为支持快速实验而生.
Keras的核心数据结构是“模型”,模型是一种组织网络层的方式。Keras中主要的模型是Sequential模型,Sequential是一系列网络层按顺序构成的栈。
下面我就用两个经典数据集iris 和 mnist 来解释Keras是如何完成逻辑分类的
iris:
# coding=utf-8import matplotlib.pyplot as pltimport seaborn as snsimport numpy as npfrom sklearn.cross_validation import train_test_splitfrom sklearn.linear_model import LogisticRegressionCVfrom keras.models import Sequentialfrom keras.layers.core import Dense, Activationfrom keras.utils import np_utils
这里用到sklearn的两种切分数据集的方法:
from sklearn.model_selection import ShuffleSplitrs = ShuffleSplit(n_splits=1, train_size=0.6, test_size=0.4, random_state=1)#n_splits表示只需要一个样本结果,现在训练-验证集比例为: 6:4, random_state为洗牌次数rs.get_n_splits(X)X_trainset = NoneX_testset = Noney_trainset = Noney_testset = Nonefor train_index, test_index in rs.split(X, y):X_trainset, X_testset = X[train_index], X[test_index]y_trainset, y_testset = y[train_index], y[test_index]
2from sklearn.cross_validation import train_test_splittrain_X, test_X, train_y, test_y = train_test_split(X, y, train_size=0.1, random_state=0)#随机切分
所有的Y都转化为one-hot函数:
def one_hot_encode_object_array(arr): uniques, ids = np.unique(arr, return_inverse=True) return np_utils.to_categorical(ids, len(uniques))
iris = sns.load_dataset("iris")# 导入数据集irisX = iris.values[:, :4]y = iris.values[:, 4]#划分数据集train_X, test_X, train_y, test_y = train_test_split(X, y, train_size=0.6, random_state=0)print train_Xtrain_y_ohe = one_hot_encode_object_array(train_y)test_y_ohe = one_hot_encode_object_array(test_y)
模型:
#定义模型model = Sequential()# 输入层大小,隐含层大小,激活函数model.add(Dense(200,input_shape=(4,)))model.add(Activation('relu'))#输出层大小,激活函数,两层网络model.add(Dense(3))model.add(Activation('softmax'))#编译模型model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=["accuracy"])#训练模型model.fit(train_X, train_y_ohe, nb_epoch=100, batch_size=1, verbose=1)
#评估模型成绩# predict_y = model.predict_proba(test_X)# print predict_yloss, accuracy = model.evaluate(test_X,test_y_ohe,verbose=0)print ("Accuracy = {:.2f}".format(accuracy))
mnist:
import numpy as npimport kerasnp.random.seed(1337)#随机种子from keras.datasets import mnistfrom keras.models import Sequentialfrom keras.layers import Densefrom keras.utils import np_utils
batch_size = 128nb_classes = 10#类别,数字0-9np_epoch = 10#梯度下降循环训练次数img_size = 28*28#输入图片大小
(X_train,y_train),(X_test,y_test) = mnist.load_data()#加载数据集,已经划分好,shuffle-splitX_train = X_train.reshape(y_train.shape[0],img_size).astype("float32")/255X_test = X_test.reshape(y_test.shape[0],img_size).astype("float32")/255#生成图片向量,颜色1-255print X_train.shapeprint X_test.shape
#老规矩,把Y变为one-hot编码Y_train = np_utils.to_categorical(y_train,nb_classes)Y_test = np_utils.to_categorical(y_test,nb_classes)
model = Sequential([Dense(10,input_shape=(img_size,),activation="softmax"),])#优化模型,随机梯度下降(rmsprop),loss_funtion(交叉熵)model.compile(optimizer='rmsprop',loss='categorical_crossentropy',metrics=['accuracy'])model.fit(X_train,Y_train,batch_size=batch_size,nb_epoch=1,verbose=1,validation_data=(X_test,Y_test))
评估模型成绩:
score = model.evaluate(X_test,Y_test,verbose=0)print ('accuracy:{}'.format(score[1]))
my github:
https://github.com/TFknight/PythonStudy/tree/master/keras-learn
阅读全文
1 0
- keras入门-简单数据集的运用
- Keras的入门
- keras入门 ---在小数据集上训练神经网络
- Keras入门课3 -- 使用CNN识别cifar10数据集
- Keras 入门课4 -- 使用ResNet识别cifar10数据集
- keras自带的数据集
- Keras-数据集介绍
- keras入门 --- Data augmentation(数据扩充)
- 基于Keras的imdb数据集的情感二分类
- Flume 入门与简单运用
- DELPHI入门3--最简单的数据库连接,运用
- Android之dagger2的简单运用和详细解读(入门)
- keras入门
- keras入门
- keras小数据集扩充
- Python/Keras如何将给定的数据集打乱
- Keras基于Cifar-10数据集的CNN实现
- keras下基于mnist数据集的cnn
- Java Web 简单的分页显示实例代码
- 一只很能装的创意午餐杯,节后综合症被治愈了丨钛空舱最生活
- Java后端程序员面经(1-2. Java基础之异常篇)
- python---property属性
- [bzoj2763]飞行路线 分层图最短路
- keras入门-简单数据集的运用
- 2017/10/10学习笔记
- python爬虫由浅入深12---scrapy框架的基础入门
- 相对定位与绝对定位的区别
- 201710102000->利用ngui拾取手指滑动的对象
- hdu5361 最短路+并查集
- boost.Program_options的 default_value 和 implicit_value,notify,以及一选项多参数
- 1:密码翻译
- c++笔记:(3)C++ 类 & 对象