基于BP的adaBoost分类算法

博主分享了自己尝试将BP神经网络与AdaBoost结合进行分类的代码实现,虽然实际效果并未达到预期,仅实现了约85%的正确率,且AdaBoost未明显优化分类效果。可能是由于分类标签仅为0和1导致,博主推测使用1和-1作为标签可能会有所改进。代码可供学习和研究,实验数据可从网上获取并调整。
摘要由CSDN通过智能技术生成

在贴代码之前,必须说明的是:本代码是博主用于学习的,实现效果实在不理想。代码只是初步实现了BP和adaBoost的结合,但是经多次检测,adaBoost并没有做到优化分类效果,错误率与仅仅使用BP相同。这可能是在代码的实现过程里,分类标签是1和0所造成的(如果是1和-1可能情况有改善)。不过这只是博主的推测。总而言之,代码实现了大概85%的正确率。想要进一步学习或研究代码的,代码就请拿去用吧。对于实验数据,其实网上有很多,很容易找来然后改动代码,加以使用

#coding:utf-8
'''结合ADABOOST和BP的算法实现分类'''
import numpy as np 
from numpy import * 
import pandas as pd  
import matplotlib.pyplot as plt  

def loadDataSet(filename):
    dataMat=[]
    classLabels=[]
    fr=open(filename)
    for line in fr.readlines():
        lineArr=line.strip().split(',')
        dataMat.append([float(lineArr[0]),float(lineArr[1])])
        classLabels.append(int(lineArr[-1]))
    return mat(dataMat),mat(classLabels).T

X,classLabels=loadDataSet('F:\coursera_homework\machine-learning-ex2\ex2\ex2data2.txt')
y=classLabels

def sigmoid(z):  
    return 1 / (1 + np.exp(-z))
def result(h):
    result=[1 if t>=0.5 else 0 for t in h]
    return mat(result).T
def forward_propagate(X, theta1, theta2):  
    m = X.shape[0]

    a1 = np.insert(X, 0, values=np.ones(m), axis=1)
    z2 = a1 * theta1.T
    a2 = np.insert(sigmoid(z2), 0, values=np.ones(m), axis=1)
    z3 = a2 * theta2.T
    h = sigmoid(z3)
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值