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。

  • 相关阅读:
    POJ3094 UVALive3594 HDU2734 ZOJ2812 Quicksum【进制】
    UVALive5583 UVA562 Dividing coins
    POJ1979 HDU1312 Red and Black【DFS】
    POJ1979 HDU1312 Red and Black【DFS】
    POJ2386 Lake Counting【DFS】
    POJ2386 Lake Counting【DFS】
    HDU4394 Digital Square
    HDU4394 Digital Square
    UVA213 UVALive5152 Message Decoding
    UVA213 UVALive5152 Message Decoding
  • 原文地址:https://www.cnblogs.com/20183711PYD/p/14283548.html
Copyright © 2011-2022 走看看