目录

1、神经网络:(Artifical Neural Network)

2、MLP简介

3、MLP方法

4、MLP简单的二分类代码案例


1、神经网络:(Artifical Neural Network)

全程为人工神经网络,是一种模仿生物神经网络(大脑)的结构和功能的数学模型或计算机模型

生物神经细胞;

神经细胞是构成神经系统的基本单元,称为生物神经元,简称神经元

# 简单神经网络

S型函数,单个神经元。

最简单的神经网络就是逻辑回归

# 二进制是生物学和计算机学的链接

# 神经网络的隐藏层不是越多越好,随着层数增多会达到一个阈值,再增加基本上不变,或者反而会减小。

2、MLP简介

MLP常常被用来做分类,每个输出对应一个不同的二进制分类(比如,垃圾邮件/正正常邮件,紧急/非紧急)

01 每个分类是在互斥的情况下爱,输出层通常被修改成一个共享的soft-max函数。

例如:图片数字的分类

3、MLP方法

sklearn.neural_network.MLPClassifier

MLPClassifier(solver=’sgd’, activation=’relu’,alpha=1e-4,hidden_layer_sizes=(50,50), random_state=1,max_iter=10,verbose=10,learning_rate_init=.1)

参数说明: 
1. hidden_layer_sizes :例如hidden_layer_sizes=(50, 50),表示有两层隐藏层,第一层隐藏层有50个神经元,第二层也有50个神经元。 
2. activation :激活函数,{‘identity’, ‘logistic’, ‘tanh’, ‘relu’}, 默认relu 
- identity:f(x) = x 
- logistic:其实就是sigmod,f(x) = 1 / (1 + exp(-x)). 
- tanh:f(x) = tanh(x). 
- relu:f(x) = max(0, x) 
3. solver: {‘lbfgs’, ‘sgd’, ‘adam’}, 默认adam,用来优化权重 
- lbfgs:quasi-Newton方法的优化器 
- sgd:随机梯度下降 
- adam: Kingma, Diederik, and Jimmy Ba提出的机遇随机梯度的优化器 
注意:默认solver ‘adam’在相对较大的数据集上效果比较好(几千个样本或者更多),对小数据集来说,lbfgs收敛更快效果也更好。 
4. alpha :float,可选的,默认0.0001,正则化项参数 
5. batch_size : int , 可选的,默认’auto’,随机优化的minibatches的大小batch_size=min(200,n_samples),如果solver是’lbfgs’,分类器将不使用minibatch 
6. learning_rate :学习率,用于权重更新,只有当solver为’sgd’时使用,{‘constant’,’invscaling’, ‘adaptive’},默认constant 
- ‘constant’: 有’learning_rate_init’给定的恒定学习率 
- ‘incscaling’:随着时间t使用’power_t’的逆标度指数不断降低学习率learning_rate_ ,effective_learning_rate = learning_rate_init / pow(t, power_t) 
- ‘adaptive’:只要训练损耗在下降,就保持学习率为’learning_rate_init’不变,当连续两次不能降低训练损耗或验证分数停止升高至少tol时,将当前学习率除以5.

此方法详细介绍见:https://blog.csdn.net/u011311291/article/details/78743393

4、MLP简单的二分类代码案例

import pandasdata=pandas.read_csv('D:\\DATA\\pycase\\number2\\4.5\\Data.csv')# 1 数据质量分析(缺失值、异常值、一致性分析)基本描述、检查空值explore=data.describe()# 此处为神经网络模型,数据量大,且有特征标签不好插值。顾进行删除data=data.dropna()data.shape# 2 数据变换
# 对离散特征进行虚拟变量处理
# 分开定义变量为后续预测做铺垫,直接调用dummyColumns=['Gender', 'Home Ownership', 'Internet Connection', 'Marital Status','Movie Selector', 'Prerec Format', 'TV Signal']
# 将逻辑变量进行类型转换for column in dummyColumns: # 遍历选择的列进行类型转化data[column]=data[column].astype('category')dummiesData=pandas.get_dummies(data, # 要处理的Dataframecolumns=dummyColumns, # 要处理的列名,如果不指定该列,默认为处理所有的列 prefix_sep=" ",   # 前缀和离散值的分隔符,默认为下划线drop_first=True # 是否从备选项中删除第一个,建模的时候为避免共线性使用)# 以性别为列,通过去重查看处理效果,查看某列属性的防范,两种,“。” 和[]dummiesData['Gender Male'].unique()data.Gender.unique()data['Gender'].unique()"""
博士后 post-Doc
博士   Doctorate
硕士   Master's Degree
学士   Bachelor's Degree
副学士    Associate's Degree
专业院校  Some College
职业学校  Trade School
高中      High School
小学      Grade School
"""# 有大小离散特征值的转化educationLevelDict={'Post-Doc':9,'Doctorate':8,'Master\'s Degree':7,# 在这里需要转义字符“\”'Bachelor\'s Degree': 6,'Associate\'s Degree': 5,'Some College': 4,'Trade School': 3,'High School': 2,'Grade School': 1}
# 增加数值列dummiesData['Education Level Map']=dummiesData['Education Level'].map(educationLevelDict)# 同理其他的可测量数值变量freqMap = {'Never': 0,'Rarely': 1,'Monthly': 2,'Weekly': 3,'Daily': 4
}
dummiesData['PPV Freq Map'] = dummiesData['PPV Freq'].map(freqMap)
dummiesData['Theater Freq Map'] = dummiesData['Theater Freq'].map(freqMap)
dummiesData['TV Movie Freq Map'] = dummiesData['TV Movie Freq'].map(freqMap)
dummiesData['Prerec Buying Freq Map'] = dummiesData['Prerec Buying Freq'].map(freqMap)
dummiesData['Prerec Renting Freq Map'] = dummiesData['Prerec Renting Freq'].map(freqMap)
dummiesData['Prerec Viewing Freq Map'] = dummiesData['Prerec Viewing Freq'].map(freqMap)dummiesData.columns# 选取特征值dummiesSelect = ['Age', 'Num Bathrooms', 'Num Bedrooms', 'Num Cars', 'Num Children', 'Num TVs', 'Education Level Map', 'PPV Freq Map', 'Theater Freq Map', 'TV Movie Freq Map', 'Prerec Buying Freq Map', 'Prerec Renting Freq Map', 'Prerec Viewing Freq Map', 'Gender Male','Internet Connection DSL', 'Internet Connection Dial-Up', 'Internet Connection IDSN', 'Internet Connection No Internet Connection','Internet Connection Other', 'Marital Status Married', 'Marital Status Never Married', 'Marital Status Other', 'Marital Status Separated', 'Movie Selector Me', 'Movie Selector Other', 'Movie Selector Spouse/Partner', 'Prerec Format DVD', 'Prerec Format Laserdisk', 'Prerec Format Other', 'Prerec Format VHS', 'Prerec Format Video CD', 'TV Signal Analog antennae', 'TV Signal Cable', 'TV Signal Digital Satellite', 'TV Signal Don\'t watch TV'
]inputData = dummiesData[dummiesSelect]# 选取结果值,有空值,需要[]outputData=data.GenderoutputData=dummiesData['Home Ownership Rent']# 导入神经网络的方法 from sklearn.neural_network import MLPClassifierfor i in  range(1,11): # 遍历隐藏层从1到10ANNModel=MLPClassifier(activation='relu',  # 激活函数,类似S类型函数hidden_layer_sizes=i # 隐藏层越多,运算呈现几何级倍增,不是越多越好)ANNModel.fit(inputData,outputData)score=ANNModel.score(inputData,outputData)print(str(i)+","+str(score)) # 输出每个隐藏层对应的分数# 导入新数据进行训练和测试newData=pandas.read_csv('D:\\DATA\\pycase\\number2\\4.4\\newData.csv')
newData=newData.dropna()# 将逻辑变量转化为虚拟变量,转换方式利用样本转化类型for column in dummyColumns: newData[column]=newData[column].astype('category',categories=data[column].cat.categories)# 依据样本字典进行新字段列的增加newData['Education Level Map'] = newData['Education Level'].map(educationLevelDict)newData['PPV Freq Map'] = newData['PPV Freq'].map(freqMap)
newData['Theater Freq Map'] = newData['Theater Freq'].map(freqMap)
newData['TV Movie Freq Map'] = newData['TV Movie Freq'].map(freqMap)
newData['Prerec Buying Freq Map'] = newData['Prerec Buying Freq'].map(freqMap)
newData['Prerec Renting Freq Map'] = newData['Prerec Renting Freq'].map(freqMap)
newData['Prerec Viewing Freq Map'] = newData['Prerec Viewing Freq'].map(freqMap)dummiesNewData=pandas.get_dummies(newData,columns=dummyColumns,prefix=dummyColumns,# 列名的前缀,在多个列有相同离散项时候使用prefix_sep=" ",drop_first=True)inputNewData=dummiesNewData[dummiesSelect]ANNModel.predict(inputData)

4、简单的神经网络(MLP神经网络分类基础)相关推荐

  1. 神经网络和深度学习(二)——一个简单的手写数字分类网络

    本文转自:https://blog.csdn.net/qq_31192383/article/details/77198870 一个简单的手写数字分类网络 接上一篇文章,我们定义了神经网络,现在我们开 ...

  2. DL:深度学习(神经网络)的简介、基础知识(神经元/感知机、训练策略、预测原理)、算法分类、经典案例应用之详细攻略

    DL:深度学习(神经网络)的简介.基础知识(神经元/感知机.训练策略.预测原理).算法分类.经典案例应用之详细攻略 目录 深度学习(神经网络)的简介 1.深度学习浪潮兴起的三大因素 深度学习(神经网络 ...

  3. 神经网络python实例分类_Python使用神经网络进行简单文本分类

    原文链接:http://tecdat.cn/?p=8613​tecdat.cn 深度学习无处不在.在本文中,我们将使用Keras进行文本分类. 准备数据集 出于演示目的,我们将使用 20个新闻组 数据 ...

  4. 基于Halcon的MLP(多层感知神经网络)分类器分类操作实例

    一.介绍         人工神经网络(Artificial Neural Network,ANN)简称神经网络(Neural Network,NN)或类神经网络,是一种模仿生物神经网络的结构和功能的 ...

  5. [python] 深度学习基础------人工神经网络实现鸢尾花分类(一)

    ​​​​​​​人工神经网络实现鸢尾花分类(一) 人工神经网络实现鸢尾花分类(二) 人工神经网络实现鸢尾花分类(三) 人工神经网络实现鸢尾花分类(四) 人工神经网络实现鸢尾花分类(五) 目录 人工智能主 ...

  6. Tensorflow实现神经网络及实现多层神经网络进行时装分类

    Tensorflow实现神经网络及实现多层神经网络进行时装分类 1. tf.keras构建模型训练评估测试API介绍 import tensorflow as tf from tensorflow i ...

  7. [图神经网络] 图神经网络GNN基础入门

    最近,深度学习领域关于图神经网络(Graph Neural Networks,GNN)的研究热情日益高涨,图神经网络已经成为各大深度学习顶会的研究热点,包括社交网络,知识图,推荐系统,甚至生命科学.G ...

  8. 立即学习AI:03-使用卷积神经网络进行马铃薯分类

    今天学习AI (LEARN AI TODAY) This is the 3rd story in the Learn AI Today series! These stories, or at lea ...

  9. 基于神经网络的文本分类(基于Pytorch实现)

    <Convolutional Neural Networks for Sentence Classification> 作者:Yoon Kim 单位:New York University ...

  10. 用于分类的神经网络算法,神经网络算法通俗解释

    神经网络是什么 神经网络是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型.这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的. 生物神经网络 ...

最新文章

  1. SQL2008代理作业出现错误: c001f011维护计划创建失败的解决方法
  2. 马自达新车全面取消触摸屏,意外引得叫好声一片
  3. mimo的误码率_混合波束成形专栏|基础:深入浅出5G,毫米波,大规模MIMO与波束赋形...
  4. elasticsearch使用more_like_this实现基于内容的推荐
  5. 将datatable导出为excel的三种方式(转)
  6. java递归遍历删除文件
  7. snap7在linux怎么用,Ubuntu 通过snap7连接西门子1200
  8. regex match
  9. 大整数相乘 + 分治法(JS)
  10. 理清网站数据分析思路导图
  11. php 获取文件给用户下载,让PHP更快的为用户提供文件下载_PHP教程
  12. 【ZJOI 2018】 历史(lct)
  13. 您的CPU支持该TensorFlow二进制文件未编译为使用的指令:AVX AVX2
  14. 海思3518C 4G模块移植及运用
  15. App 快捷方式——创建快捷方式
  16. XLua官方教程 06 热更新实例 hotfix样例
  17. Windows下如何清除文件资源管理器搜索框中的搜索记录?
  18. 李晨光:向着兴趣一路前行
  19. iconfont 字体图标
  20. DB2数据库的基础学习

热门文章

  1. vue使用DES模式加密解密,包括Java加密解密
  2. html拖拽开发,H5Web前端开发_实现拖拽效果
  3. 【uni-app】picker普通选择器的用法
  4. cesium获取相机状态
  5. 74HC595芯片引脚说明
  6. js-xlsx实现文件导出、下载(excel)
  7. 词云制作这5款工具就够了
  8. 演讲口才助你突破怯场之苦
  9. 大学实验中如何进行光纤熔接、涂覆与测试?
  10. UNCTF2022部分题解