python 深度学习(4)-- 二元分类问题

关于数据集的处理问题,跟回归问题差不多,不再展示数据处理相关步骤和代码。标准化后, 假设 x 为属性数据(属性值构成的二维数组),y 是目标数据(0和1 构成的一维数组)。

先简单介绍一下冲量:

我们知道,在梯度下降算法中,模型可能被局部极小值捕获,而不是全局极小值。在学习率较小的情况下,增加了这种可能。增大学习率又会使得模型无法稳定,因此,另一个帮助网络脱离局部极小值的技术就是使用冲量。如图,一个较高的冲量会减少训练时间,同时帮助网络避免被局部极小值捕获。

                           

然而,冲量参数设置过高会增加全局极小值超调的风险。如果设置了一个很高的学习率,并结合大的冲量,这种风险会进一步增加。而如果冲量系数设置得很低,模型将缺乏足够的能力越过局部极小值。

一个经验法则:在使用大的冲量时降低学习率

 

接着继续构建神经网络并训练模型。

import random
from sklearn.cross_validation import train_test_split
np.random.seed(2018)
x_train, x_test, y_train, y_test = train_test_split(x,y,test_size = 0.2)

''' 构建分类神经网络 '''
from sknn.mlp import Classifier, Layer
fit1 = Classifier(
                ''' 采用 sigmoid 激活函数,最后是分类问题标准的输出 softmax 层 '''
                layers = [Layer("Sigmoid",units = 45),Layer("Sigmoid",units = 18),Layer("Sigmoid",units = 18),
                                Layer("Softmax")] 
                learning_rate = 0.80,
                random_state = 2018,
                valid_size = 0.25, ''' 验证集大小 '''
                learning_momentum = 0.30, ''' 冲量值 '''
                n_iter = 100)

# 训练模型
print "fitting model right now"
fit1.fit(x_train, y_train)

前面的参数有有一个没提到的验证集大小,什么是验证集?谨慎的统计学家提供了一个受控分配(留出验证)的例子,他在没有观察的情况下随机抽取一部分样本,然后用剩下的数据无限制的进行训练。这样他就确信,留出的数据能对其模型的有效性做出公正的判断。

                                   

 

使用混淆矩阵评估二分类模型

pred1_train = fit1.predict(x_train)
from sklearn.metrics import confusion_matrix
confu1 = confusion_matrix(y_train, pred1_train)
print confu1
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值