用神经网络做的简单的二分类

这两周学习了深度学习的基础知识,大概看了下BP,CNN,RNN的基本原理和概念,又用了几个小时时间(白天要上班只能晚上学习)简单看了下Keras文档,建立了一个非常简单的神经网络模型。
这个模型是简单的二分类模型(小白中的小白),当输入>25是输出1,否则输出0.

这里是需要导入的库:

from keras.models import Sequential
from keras.layers import Dense,Activation
from keras import regularizers
from keras.optimizers import SGD
from keras.models import load_model
import numpy as np
import pandas as pd

数据生成函数,生成样本和标签,数据量非常小:

def datagererate(x):
    '''x,list;根据x产生x^2,x**2>25为1,<=25为0
    返回sx,label,numpy格式'''
    x_pow = list(map(lambda x:x**2,x))
    data = pd.DataFrame(x_pow,columns=['value'])
    data_select = data['value']>25
    data['label'] = data_select.values
    return  data['value'].values,data['label'].values

模型训练和预测:

def train_and_Test(x_train,label,x_test):
    '''
    x_train为样本数据,label为样本标签,x_test为要预测的样本
    '''
    model = Sequential()
    model.add(Dense(32,input_dim=1)) #建立输入层,一维数据
    model.add(Activation('relu')) #激活函数采用ReLU
    model.add(Dense(32,b_regularizer=l2(0.001))) #第二层32个单元,对系数b进行正则化
    model.add(Dense(32))
    model.add(Activation('relu'))
    model.add(Dense(1))   #输出层
    model.add(Activation('sigmoid'))
    sgd = SGD(lr=0.01, decay=1e-5, momentum=0.9, nesterov=True)    #采用随机梯度下降参数
    model.compile(optimizer=sgd,
                  loss='binary_crossentropy',
                  metrics=['accuracy'])
    model.fit(x_train,label,nb_epoch=30,batch_size=5) #编译
    data_predict = model.predict_classes(x_test) #预测
    (m,n) = data_predict.shape
    data_out = pd.DataFrame(x_test,columns=['values'])
    data_out['label'] = data_predict.reshape(n,m)[0] 
    return data_out #输出数据和标签

这个模型用于刚刚接触深度学习或者Keras的小白建立一个直观的感觉,深度学习的概念还是要好好看书学习。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值