• 机器学习HW2,logistic二分类的问题,使用adagrad进行梯度下降


    本次作业主要针对的是二分类的问题,所以激活函数选用的是sigmoid函数,误差函数使用的是cross entropy,可以很方便的计算weight和bias的偏导。

    最后的结果在0.91左右。

    # -*- coding: utf-8 -*-
    """
    Created on Wed May 16 16:51:13 2018


    @author: 被遗弃的庸才
    """
    import numpy as np
    #import matplotlib.pyplot as plt
    xandy=[]
    with open('train-classification.txt') as files:
        while True:
            line=files.readline()
            if line.strip():
                for j in range(1,59):
                    xandy.append(float(line.split(',')[j]))
                    #pass
                    #print()#换行
            else:
                break
    xandy=np.array(xandy).reshape(4001,58)#得到的是4001行,57x,1列y的值
    #随机给出x和y的值
    #w=np.random.randn(57,1)
    w=np.random.randn(57,1)
    b=np.random.randn(1)
    lr=10#手动调学习率
    literator=10000#迭代次数为10000次
    sum_gradient_w1=np.zeros([57,1])
    sum_gradient_b=0
    cost=[]
    hen=[]
    for j in range(literator):
        y=np.dot(xandy[:,0:57],w)+b
        active=1/(1+np.exp(-y))
        #print(np.log(1-active))
        #cost.append(-sum(xandy[:,57].reshape(4001,1)*np.log(active)+(1-xandy[:,57]).reshape(4001,1)*np.log(1-active))/xandy[:,57].size)
        
        gradient_w=-np.dot(xandy[:,0:57].transpose(),(xandy[:,57].reshape(4001,1)-active))/xandy[:,57].size
        gradient_b=-sum((xandy[:,57].reshape(4001,1)-active))/xandy[:,57].size
        
       # w-=gradient_w*lr
        #b-=gradient_b*lr
        hen.append(j)
        #print(sum_gradient_w1.shape)
        sum_gradient_w1+=gradient_w**2
        ada_w=np.sqrt(sum_gradient_w1)
        w=w-lr*gradient_w/ada_w
        sum_gradient_b+=gradient_b**2
        ada_b=np.sqrt(sum_gradient_b)
        b=b-lr*gradient_b/ada_b
       
    #print(cost)
    for i in range(xandy[:,57].size):
        if active[i]>0.5:
            active[i]=1
        else:
            active[i]=0
    contss=0
    for i in range(xandy[:,57].size):
        if active[i]== xandy[i,57]:
            contss+=1
    print(contss)
    #plt.plot(hen[100:1000],cost[100:1000]) 

  • 相关阅读:
    matplotlib基础
    numpy基础
    池化层的前向计算
    卷积神经网络应用于MNIST数据集分类
    用tensorflow的Eager执行模式
    tensorboard网络结构
    优化器
    交叉熵
    [webpack]——loader配置
    [webpack]--webpack 如何解析代码模块路径
  • 原文地址:https://www.cnblogs.com/csnd/p/16675644.html
Copyright © 2020-2023  润新知