zoukankan      html  css  js  c++  java
  • 寒假学习日报(六)

      有数据集资料的群还没批准我加群。。。因此拿Excel用随机数生成了一些,下面先补上昨天没做的逻辑回归实验。

      测试过程如下:

    import tensorflow as tf
    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    %matplotlib inline
    data = pd.read_csv('dataset/credite-a.csv')
    #head默认显示前五行
    data.head()

     

    x = data.iloc[:, :-1]
    #y轴将-1替换成0,方便显示
    y = data.iloc[:, -1].replace(-1,0)
    #顺序模型
    model = tf.keras.Sequential()
    #隐藏层1,规定4个隐藏单元数,input_shape:15列
    model.add(tf.keras.layers.Dense(4, input_shape=(15,), activation='relu'))
    #隐藏层2,依然4个单元,但不用设置input_shape,因为会自己推断
    model.add(tf.keras.layers.Dense(4, activation='relu'))
    #输出层,逻辑回归激活函数:sigmoid
    model.add(tf.keras.layers.Dense(1, activation='sigmoid'))
    
    model.summary()

       这里dense的param计算结果不再多说,上上篇博客里的代码注释里我写过。

    #ADAM算法,loss交叉熵算法,metrics运行过程中会计算正确率
    model.compile(optimizer='adam',loss='binary_crossentropy',metrics=['acc'])
    #训练
    history = model.fit(x, y, epochs=1000)

       这里训练了1000次,正确率(acc)达到了67.68%。

      图示如下:

       这里图示显示的很乱主要还是数据集弄的不够好,我只是随机生成了100条随机数据,原视频演示里数据量达到了600+。

      下面是新学的内容了:

      Softmax分类:    

      对数几率回归解决的是二分类问题,多选项问题可以使用softmax函数,它是对数几率回归在N个可能不同的值上的推广。

           神经网络原始输出不是一个概率的值,只是输入的数值做了复杂的加权与非线性处理(relu)之后的一个值而已,softmax层的作用就是将这个输出变为概率分布。

           Softmax要求每个样本必须属于某个类别,且所有可能的样本均被覆盖

           Softmax个样本分量之和为1,只有两个类别时与对数几率回归完全相同。

           tf.keras中对于多分类问题通常使用categorical_crossentropysparse_categorical_crossentropy来计算softmax的交叉熵。

    为了实现softmax分类的测试,我们需要下载个数据集,这次使用的是tensorflow里就可以导入使用的数据集,经典的Fashion MNIST数据集:

      Fashion MNIST数据集:作用是成为经典MNIST数据集的简单替换,此数据集中是一些服饰图像。可以通过tensorflow直接访问,只需要导入和加载数据即可。

      测试过程如下:

    #导入Fashion MNIST数据集
    import tensorflow as tf
    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    %matplotlib inline
    
    (train_image, train_label), (test_image, test_label) = tf.keras.datasets.fashion_mnist.load_data()

      我好像没有配置tensorflow的下载镜像源,因此下载速度偏慢,总共用了10多分钟:

       这个数据集默认存在C:Users用户名.kerasdatasets里:

       数据大概是这样子的:

     

     

       接下来是使用softmax分类问题:

    #令取值范围变为0-1(归一化)
    train_image = train_image/255
    test_image = test_image/255
    
    #建立模型,注意数据为二维(28*28)
    model = tf.keras.Sequential()
    #先将二维扁平成一维
    model.add(tf.keras.layers.Flatten(input_shape=(28,28)))
    model.add(tf.keras.layers.Dense(128, activation='relu'))
    #使用softmax激活
    model.add(tf.keras.layers.Dense(10, activation='softmax'))
    
    #编译
    ##由于label使用的是数字编码,因此这里的loss使用sparse_categorical_crossentropy
    model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['acc'])
    
    model.fit(train_image, train_label, epochs=5)

     显然这个数据集就很好,仅训练了5次正确率就达到了89.10%

    最后是评价:

     使用test_image和test_label对训练出来的模型进行评价,正确率达到了87.89%

      除了tensorflow的学习之外,今天还把虚拟机的配置调试好了,包括hadoop的伪分布式安装,原电脑上的hbase,hive,mongodb和redis的包什么的也拷到这台电脑上来了。另外从今天开始得调整一下作息了,这两天熬夜搞得白天整个人都不好了T_T。

  • 相关阅读:
    【bzoj1878】[SDOI2009]HH的项链
    【bzoj2821】作诗(Poetize)
    【bzoj2120】数颜色
    PAT 乙级真题 1005.德才论
    PAT 乙级真题 1004.福尔摩斯的约会
    博客园使用悬挂猫(上吊猫)置顶插件
    PAT 乙级真题 1002.数字分类
    AcWing 789.数的范围
    AcWing 788.逆序对的数量
    二分查找
  • 原文地址:https://www.cnblogs.com/20183711PYD/p/14283548.html
Copyright © 2011-2022 走看看