zoukankan      html  css  js  c++  java
  • 神经网络1_neuron network原理_python sklearn建模乳腺癌细胞分类器(推荐AAA)

     python机器学习-乳腺癌细胞挖掘(博主亲自录制视频)

    https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campaign=commission&utm_source=cp-400000000398149&utm_medium=share

    author: Toby,项目合作QQ:231469242

    https://www.youtube.com/watch?v=lAaCeiqE6CE&list=PLXO45tsB95cJ0U2DKySDmhRqQI9IaGxck

    人工神经网络 VS 生物神经网络 

    两者是不一样的

     生物神经网络是大自然经过千亿年进化而成,目前最先进人工智能神经网络无法达到

    人工神经网络 :通过正反馈和负反馈创建或删除神经元

    生物神经网络  :通过刺激产生新的链接,信号通过新的链接传递产生反馈,

    目前最先进人工智能神经网络无法模拟生物神经网络

     

    卷积神经网络 CNN (深度学习)应用:

    图片识别,语音识别,药物发现

    神经网络原理:hidden layer是通过函数传递值

    了解神经网络,必须了解线性代数

    神经网络对数字识别是一层层分解

     

    https://blog.csdn.net/gamer_gyt/article/details/51255448

    scikit-learn博主使用的是0.17版本,是稳定版,当然现在有0.18发行版,两者还是有区别的,感兴趣的可以自己官网上查看

    scikit-learn0.17(and 之前)上对于Neural Network算法 的支持仅限于 BernoulliRBM

    scikit-learn0.18上对于Neural Network算法有三个  neural_network.BernoulliRBM ,neural_network.MLPClassifier,neural_network.MLPRgression 

    Multi-layer Perceptron 多层感知机

    MLP是一个监督学习算法,图1是带一个隐藏层的MLP模型 
    这里写图片描述

    具体可参考:点击阅读

    1:神经网络算法简介

    2:Backpropagation算法详细介绍

    3:非线性转化方程举例

    4:自己实现神经网络算法NeuralNetwork

    5:基于NeuralNetwork的XOR实例

    6:基于NeuralNetwork的手写数字识别实例

    7:scikit-learn中BernoulliRBM使用实例

    8:scikit-learn中的手写数字识别实例

    一:神经网络算法简介

    1:背景

    以人脑神经网络为启发,历史上出现过很多版本,但最著名的是backpropagation

    2:多层向前神经网络(Multilayer  Feed-Forward Neural Network)

                                                              

    多层向前神经网络组成部分

    输入层(input layer),隐藏层(hiddenlayer),输出层(output layer)

       每层由单元(units)组成
       输入层(input layer)是由训练集的实例特征向量传入
       经过连接结点的权重(weight)传入下一层,一层的输出是下一层的输入
       隐藏层的个数是任意的,输出层和输入层只有一个
       每个单元(unit)也可以被称作神经结点,根据生物学来源定义
       上图称为2层的神经网络(输入层不算)
       一层中加权的求和,然后根据非线性的方程转化输出
       作为多层向前神经网络,理论上,如果有足够多的隐藏层(hidden layers)和足够大的训练集,可以模拟出任何方程
     

    3:设计神经网络结构

        3.1使用神经网络训练数据之前,必须确定神经网络层数,以及每层单元个数
        3.2特征向量在被传入输入层时通常被先标准化(normalize)和0和1之间(为了加强学习过程)
        3.3离散型变量可以被编码成每一个输入单元对应一个特征可能赋的值
            比如:特征值A可能取三个值(a0,a1,a2),可以使用三个输入单元来代表A
                        如果A=a0,那么代表a0的单元值就取1,其他取0
                        如果A=a1,那么代表a1的单元值就取1,其他取0,以此类推
        3.4神经网络即可以用来做分类(classification)问题,也可以解决回归(regression)问题
             3.4.1对于分类问题,如果是2类,可以用一个输入单元表示(0和1分别代表2类)
                                             如果多于两类,每一个类别用一个输出单元表示
                    所以输入层的单元数量通常等于类别的数量 
            3.4.2没有明确的规则来设计最好有多少个隐藏层
                   3.4.2.1根据实验测试和误差,以及准确度来实验并改进

    4:算法验证——交叉验证法(Cross- Validation)

     

    神经网络优点和缺点

    优点:大数据高效,处理复杂模型,处理多维度数据,灵活快速

    缺点:数据需要预处理

    代替:TensorFlow,Keras

    python sklearn建模处理乳腺癌细胞分类器

    # -*- coding: utf-8 -*-
    """
    Created on Sun Apr  1 11:49:50 2018
    
    @author: Toby,项目合作QQ:231469242
    神经网络
    """
    #Multi-layer Perceptron 多层感知机
    from sklearn.neural_network import MLPClassifier
    #标准化数据,否则神经网络结果不准确,和SVM类似
    from sklearn.preprocessing import StandardScaler
    from sklearn.datasets import load_breast_cancer
    from sklearn.model_selection import train_test_split
    import mglearn
    import matplotlib.pyplot as plt
    mglearn.plots.plot_logistic_regression_graph()
    mglearn.plots.plot_single_hidden_layer_graph()
    
    cancer=load_breast_cancer()
    x_train,x_test,y_train,y_test=train_test_split(cancer.data,cancer.target,stratify=cancer.target,random_state=42)
    
    mlp=MLPClassifier(random_state=42)
    mlp.fit(x_train,y_train)
    print("neural network:")    
    print("accuracy on the training subset:{:.3f}".format(mlp.score(x_train,y_train)))
    print("accuracy on the test subset:{:.3f}".format(mlp.score(x_test,y_test)))
    
    scaler=StandardScaler()
    x_train_scaled=scaler.fit(x_train).transform(x_train)
    x_test_scaled=scaler.fit(x_test).transform(x_test)
    
    mlp_scaled=MLPClassifier(max_iter=1000,random_state=42)
    mlp_scaled.fit(x_train_scaled,y_train)
    print("neural network after scaled:")    
    print("accuracy on the training subset:{:.3f}".format(mlp_scaled.score(x_train_scaled,y_train)))
    print("accuracy on the test subset:{:.3f}".format(mlp_scaled.score(x_test_scaled,y_test)))
    
    
    mlp_scaled2=MLPClassifier(max_iter=1000,alpha=1,random_state=42)
    mlp_scaled.fit(x_train_scaled,y_train)
    print("neural network after scaled and alpha change to 1:")    
    print("accuracy on the training subset:{:.3f}".format(mlp_scaled.score(x_train_scaled,y_train)))
    print("accuracy on the test subset:{:.3f}".format(mlp_scaled.score(x_test_scaled,y_test)))
    
    
    plt.figure(figsize=(20,5))
    plt.imshow(mlp.coefs_[0],interpolation="None",cmap="GnBu")
    plt.yticks(range(30),cancer.feature_names)
    plt.xlabel("columns in weight matrix")
    plt.ylabel("input feature")
    plt.colorbar()
    

      

    python信用评分卡建模(附代码,博主录制)

  • 相关阅读:
    OPC UA认识汇总
    linux内核铁三角-进程(任务)调度
    nginx配置文件
    git和coding的使用
    php处理mysql的结果集
    php中self和$this还有parent的区别
    Mysql练习题
    SEO优化
    css3 旋转 八仙桌
    laravel笔记
  • 原文地址:https://www.cnblogs.com/webRobot/p/8166106.html
Copyright © 2011-2022 走看看