工程构建

  • 导入sklearn相关包
import numpy as np
rom sklearn.neural_network import MLPClassifier
  • 定义readDataSet(fileName, isTest)函数,用于加载训练数据,返回特征数据(dataSet)和标签(label)
# fileName: 文件名字
# isTest: =True为测试数据时,只有54列,label直接设0
def readDataSet(fileName, isTest):fr = open(fileName,encoding='utf-8')lines = fr.readlines()numLabels = len(lines) labels = np.zeros(numLabels) #用于存放标签数据dateSet = np.zeros([numLabels,54],int) #用于存放特征数据# 逐行读取数据到dataSet,labels# 总共55列,前54列是样本特征,最后一列是样本类别(label)for i in range(numLabels):line = lines[i]label = 0if isTest:  #True:测试集只有54列,最后标签直接设为0label = 0else:  # False:取最后一列为标签数据label = line.split(' ')[54]labels[i] = labeldates = np.zeros(54)for j in range(53): # 前54列添加为特征数据dates[j] = line.split(' ')[j]dateSet[i] = datesfr.close()return dateSet,labels

添加isTest参数是为了区别训练集(55列)与测试集数据(54列)列数不同,便于交叉验证时,统计错误数量,核算正确率.

  • 加载训练数据
train_dataSet,train_labels = readDataSet('data_train.txt', False)
  • 构建神经网络
    设置网络的隐藏层数、各隐藏层神经元个数、激活函数、学习率、优化方法、最大迭代次数
clf = MLPClassifier(hidden_layer_sizes=(100,),activation='logistic', solver='adam',learning_rate_init = 0.0001, max_iter=2000)
print(clf)
clf.fit(train_dataSet,train_labels)
  • 加载测试集,使用构建好的KNN分类器对测试集进行预测
test_dataSet,test_labels = readDataSet('data_test.txt', False)
res = clf.predict(test_dataSet)
error = 0
for i in range(len(res)):if res[i] != test_labels[i]:error += 1
print('error:',error,'正确率:',(len(res) - error) / len(res))

邻居数量K影响对比

  • 情况一:使用logistic激活函数和adam优化方法,设初始学习率为0.0001,最大迭代次数为2000
    运行神经元个数为50、100、200的实验对比结果
n_hidden_layer_sizes 50 100 200
正确率 78% 80% 83%

随着隐藏层神经元个数的增加,MLP的正确率持上升趋势

  • 情况二:使用adam优化方法,设神经元个数为100,初始学习率为0.0001,最大迭代次数为2000
    运行激活函数分别为logistic、identity、tanh、relu的实验对比结果
activation identity relu tanh logistic
正确率 59% 61% 75% 80%

我们可以看出logistic的正确率最高

  • 情况三:使用logistic激活函数和adam优化方法,设神经元个数为100,初始学习率为0.0001
    运行最大迭代次数为500、1000、1500、2000的实验对比结果
max_iter 500 1000 1500 2000
错误数 8125 7690 7805 7812
正确率 59% 61% 75% 80%

当最大迭代次数> 1500时,正确率基本保持不变,这说明MLP在第1500迭代时已经收敛

期末作业实验报告:MLP实验对比(MLPClassifier)相关推荐

  1. java实验报告2013_java实验报告4

    Object eventSource = e.getSource(); if(eventSource == menuItem[0]) //新建动作 { textArea.setText("& ...

  2. 计算机网络ospf实验报告,计算机网络实验报告12_ospf实验

    计算机网络实验报告12_ospf实验 (18页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.9 积分 警示1?实验报告如有雷同,雷同各方当次实验成绩 ...

  3. 计算机网络信息安全的实验报告,网络安全实验报告.doc

    网络安全实验报告 本科实验课程报告 (2016至2017学年第1学期) 课程名称: 网络信息安全 专业名称: 行政班级: 学 号: 姓 名: 指导教师: 赵学民 报告时间: 年 月 日 实验大纲 一. ...

  4. 计算机组成原理实验pc,计算机组成原理实验报告5- PC实验

    计算机组成原理实验报告5- PC实验 2.5 PC实验 姓名:孙坚 学号:134173733 班级:13计算机 日期:2015.5.15 一.实验要求:利用CPTH 实验仪上的K16..K23 开关做 ...

  5. java数组实验报告_Java实验一实验报告

    实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse编辑.编译.运行.调试Java程序. 实验要求 1.没有Linux基础的同学建议先学习<><>课程 ...

  6. 2017—2018 实验报告:实验一

    实验一:实验报告 课程:程序设计与数据结构 班级: 1623 姓名: 张旭升 学号:20162329 指导教师:娄嘉鹏 王志强 实验日期:9月25日 实验密级: 非密级 预习程度: 已预习 必修/选修 ...

  7. android消息响应实验报告,android实验一实验报告-20210401011015.docx-原创力文档

    Last revision on 21 December 2020 Last revision on 21 December 2020 Android实验一实验报告 Android实验报告一 姓名:丁 ...

  8. 微型计算机广告牌实验报告,微型计算机实验报告1资料.doc

    实验报告 1. 实验名称 程序编译及调试 2. 实验目的 掌握汇编语言语句格式,程序结构,上机调试步骤和各种类型程序的设计方法.了解汇编语言的基本语法,汇编程序的功能和汇编,调试过程,伪指令,汇编语言 ...

  9. c语言递归算法实验报告,递归算法实验报告.docx

    递归算法实验报告 递归算法实验报告 篇一:递归算法的设计和实现的实验报告 班级学号 姓名 实验组别 试验日期 室温 报告日期成绩 报告内容:(目的和要求.原理.步骤.数据.计算.小结等) 实验名称:递 ...

  10. java面向对象编程基础实验报告_20155313 实验三《Java面向对象程序设计》实验报告...

    一.实验内容 XP基础 XP核心实践 相关工具 二.实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器>课程 2.完成实验.撰写实验报 ...

最新文章

  1. php curl viewstate,php curl – 发布asp.net viewstate值
  2. 从上海到旧金山,2021 LiveVideoStackCon回归上海
  3. log4net保存到数据库系列二:独立配置文件中配置log4net
  4. 源码编译安装Apache-附一键部署脚本
  5. C语言之枚举的定义以及测试
  6. 怎么将表中的空格都转变为0???
  7. 阿里Java面经大全(整合版)
  8. 互联网+智慧用电:智能微型断路器应用发展浅析-李亚俊
  9. 收藏:通俗讲解计算机工作原理
  10. R语言混合效应(多水平/层次/嵌套)模型及贝叶斯实现技术
  11. 蚁景网络安全渗透测试工程师特训班学习记录
  12. 华为联运游戏审核驳回:在未安装或需更新HMS Core的手机上,提示安装,点击取消后,游戏卡屏(集成的6.1.0.301版本游戏SDK)
  13. 纯css饼图,使用css3画饼图
  14. EasyCVR通过GB28181级联到紫光华智综合安防应用平台无法注册成功问题排查
  15. 金融数据分析与挖掘具体实现方法 -1
  16. 水香木鱼书写PPT总结
  17. 高中数学基础-2.3幂函数
  18. LeetCode50——一题学会快速幂算法
  19. java ppt转换为html5,Apache POI PPT - PPT转换为图片
  20. Ceph -存储部署 ;

热门文章

  1. 9.16日常学习笔记
  2. Android项目“error: Apostrophe not preceded by \ (”报错解决方法
  3. Xmy的第二次python(文件操作)
  4. 循环彩灯c语言程序,PLC彩灯实例,一个简单的顺序控制
  5. pcm数据编码成为aac格式文件(可以在酷狗播放)
  6. BZOJ 1208 宠物收养所 Splay树
  7. 计算机count是什么函数,计算机里COUNT是什么函数?怎么用的?好评!!
  8. SQL Server 数据库之分离和附加数据库
  9. IceSword 1.18 by PJF
  10. 初学JAVA-3-重新定义和第一个JAVA手工程序