【Python数据分析】数据挖掘建模——分类与预测——人工神经网络
人工神经网络(artificial neural networks,ANNs),是模拟生物神经网络进行信息处理的一种数学模型。
一、人工神经网络简介
更多关于神经网络的发展可以参考:人工神经网络简介_网络资源是无限的-CSDN博客_人工神经网络
人工神经元是人工神经网络操作的基本信息处理单位。人工神经元的模型如图所示,它是人工神经网络的设计基础。一个人工神经元对输入信号X=[x1,x2,...,xm]的输出为y=f(u+b),其中
激活函数主要有以下几种形式
人工神经网络的学习也称为训练,指的是神经网络在收到外部环境的刺激下调整神经网络的参数,使神经网络以一种新的方式对外部环境做出反应的一个过程。
在神经网络的发展过程中,提出了多种不同的学习规则,没有一种特定的学习算法适用于所有的网络结构和具体问题。在分类和预测中,学习规则(误差校正学习算法)是使用最广泛的一种。误差校正学习算法根据神经网络的输出误差对神经元连接强度进行修正,属于有指导学习。我们最常见的BP神经网络用的就是δ学习算法。BP神经网络通过信号正向传播与误差逆向传播来进行各层权矩阵的修改,此过程一直进行到网络输出的误差逐渐减少到可以接受的程度或达到设定的学习次数为止。
下面两篇文章是我认为对BP神经网络解释的比较通俗易懂的:
人工神经网络_Remys的技术博客_51CTO博客_人工神经网络算法
人工神经网络(ANN)及BP算法_leiting_imecas的博客-CSDN博客_人工神经网络
使用人工神经网络模型需要确定网络连接的拓扑结构、神经元特征和学习规则等,常用来实现分类和预测的人工神经网络算法如下表:
二、人工神经网络的Python实现
Python中scklit-learn库中并没有神经网络模型,我们通常用Keras库来实现神经网络。
下面我们建立一个简单的神经网络模型,其中有三个输入节点,10个隐藏节点和1个输出节点
import pandas as pd
filename = './Python数据分析与挖掘实战(第2版)/chapter5/demo/data/sales_data.xls'
data = pd.read_excel(filename, index_col ="序号")#数据是类别标签,将它转换为数据
data[data == "好"] = 1
data[data == "是"] = 1
data[data == "高"] = 1
data[data != 1] = 0
x = data.iloc[:,:3].astype(int)
y = data.iloc[:,3].astype(int)
from keras.models import Sequential
from keras.layers.core import Dense, Activationmodel = Sequential() #建立模型
model.add(Dense(input_dim = 3, units = 10))
model.add(Activation('relu')) #用relu函数作为激活函数能够大幅度提高准确度
model.add(Dense(input_dim = 10, units = 1))
model.add(Activation('sigmoid')) #由于是0-1输出,用sigmoid函数作为激活函数model.compile(loss = 'binary_crossentropy', optimizer = 'adam')
#编译模型,由于我们做的是二元分类,所以我们指定损失函数为binary_crossentropy,以及模式为binary
#另外常见的损失函数还有mean_squared_error, categorical_crossentropy等
#对于求解方法,我们指定adam,此外还有sgd,rmsprop等model.fit(x, y, epochs = 1000, batch_size = 10) #训练模型,学习1000次
yp = model.predict_classes(x).reshape(len(y)) #分类预测
用混淆矩阵可视化结果
def cm_plot(y, yp):from sklearn.metrics import confusion_matrixcm = confusion_matrix(y, yp) print(cm)import matplotlib.pyplot as plt plt.matshow(cm, cmap=plt.cm.Greens) plt.colorbar() for x in range(len(cm)): for y in range(len(cm)):plt.annotate(cm[x,y], xy=(x, y), horizontalalignment='center', verticalalignment='center')plt.ylabel('True label') plt.xlabel('Predicted label') return pltcm_plot(y,yp).show()
得到的结果如下:
可以看到,检测样本为34个,预测正确的个数为26个,预测准确率为76.47%,预测准确率较低,这是由于神经网络训练时需要较多样本,而这里的训练数据较少导致。
【Python数据分析】数据挖掘建模——分类与预测——人工神经网络相关推荐
- 【Python数据分析】数据挖掘建模——分类与预测——回归分析
根据挖掘目标和数据形式可以建立分类与预测.聚类分析.关联规则.时序模型.离群点检测等模型.首先介绍一下分类与预测模型. 一.分类预测模型实现过程 分类模型主要是预测分类编号,预测模型主要是建立连续值函 ...
- 【Python数据分析】数据挖掘建模——分类与预测——决策树
决策树是一种树状结构,它的每一个叶节点对应着一个分类,非叶节点对应着在某个属性上的划分,根据样本在该属性上的不同取值将其划分成若干个子集.构造决策树的核心问题是在每一步如何选择适当的属性对样本做拆分. ...
- Python 数据分析 数据挖掘 学习路径图
话不多说,相信看到这篇文章的你一定是对数据分析,数据挖掘有兴趣,或者想从事和方面.本文不再累述python对数据分析的重要,数据分析这门的由来之类的. 在这里,我单刀直入,已我学习数据挖掘3年来的经历 ...
- Python数据分析——数据建模、数据分类实现过程、常见分类算法
python数据建模概述 数据建模指的是对现实世界各类数据的抽象组织,建立一个适合的模型对数据进行数据 在数据分析与挖掘中,我们通常需要根据一些数据建立起特定的模型,然后处理. 模型的建立需要依赖于算 ...
- 挖掘建模-分类与预测-决策树
代码来源:Python数据分析与挖掘实战 分析数据: #-*- coding: utf-8 -*- #使用ID3决策树算法预测销量高低import pandas as pd from sklearn. ...
- 彩民看过来,看老程序员如何用Python数据分析双色球基于线性回归算法预测下期中奖结果示例
@本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府 本文实例讲述了Python数据分析之双色球基于线性回归算法预测下期中奖结果.分享给大家供大家参考,具体如下: 前面讲述了关于双色球 ...
- 挖掘建模-分类与预测-回归分析-逻辑回归
利用Scikit-Learn对以下数据集进行逻辑回归分析.首先进行特征筛选,特征筛选的方法很多,主要包含在Scikit-Learn的feature-selection库中,比较简单的有通过F检验(f_ ...
- 学会Python数据分析(建模)--基础篇1
Python数据分析 Python基础 常用操作符 算术操作符: 赋值操作符 比较操作符 逻辑操作符 其他运算符 变量和赋值 数据类型和转换 print()函数 条件语句 if语句 assert 关键 ...
- 神经网络建模的基本思想,人工神经网络建模步骤
利用人工神经网络建立模型的步骤 人工神经网络有很多种,我只会最常用的BP神经网络.不同的网络有不同的结构和不同的学习算法.简单点说,人工神经网络就是一个函数.只是这个函数有别于一般的函数.它比普通的函 ...
最新文章
- 精心分享7个小巧却强大的电脑端小软件,让人大开眼界!
- C#(.net)中的一次连接数据库执行多条sql语句
- mysql 导出dmp文件_一文带你了解MySQL主从复制(Master-Slave)
- 前端见微知著AngularJS备忘篇:温故而知新,可以为师矣
- Dockerfile 中的命令
- 小胖IT大讲堂之一 .NET Reflector工具介绍
- 证明3-SAT问题是NP-complete
- 软件基本功:垃圾代码的共同特征
- python语言中浮点数_在Python中截断浮点数
- 图像按钮ImageButton
- 我的Python网路爬虫学习之路--1
- CSS font-family字体大合集
- OpenCV4,5个方法让你从小白到大佬
- qpython3使用_用qpython3写一个最简单的发送短信的程序
- 如何提高用户粘性,增强活跃度?
- Linux 使用系统调用进行文件读写
- [Kerberos基础]-- kerberos认证原理---讲的非常细致,易懂
- 华为云开发者学堂——学习笔记
- tp打印服务器修改ip,tp打印服务器和网络打印机安装方法.docx
- Java开发短连接分享功能
热门文章
- 25个Linux相关的网站【转】
- IOS自己主动布局中的浮动布局(6)----MyFloatLayout横空出世
- 联合光伏回应“天价收购”质疑:并非每瓦10.24元
- clean code
- apache2.4.7 make报错[exports.lo] Error 1 解决方法
- Kernel那些事儿之内存管理(5) --- 衣带渐宽终不悔(上)
- C++编译器默默编写并调用哪些函数
- Netty端口被占用问题
- 控件readonly之后的取值
- MultiByteToWideChar和WideCharToMultiByte的正确使用方法及参数详解