龙空技术网

机器学习实战:应用ANN预测客户解约

互联网技能图谱 220

前言:

而今你们对“自组织映射神经网络的应用”大约比较注重,咱们都需要了解一些“自组织映射神经网络的应用”的相关内容。那么小编也在网络上收集了一些有关“自组织映射神经网络的应用””的相关文章,希望姐妹们能喜欢,你们快快来了解一下吧!

0x00 人工神经网络介绍

人工神经网络(Artificial Neural Network,即ANN ),是20世纪80 年代以来人工智能领域兴起的研究热点。它从信息处理角度对人脑神经元网络进行抽象, 建立某种简单模型,按不同的连接方式组成不同的网络。在工程与学术界也常直接简称为神经网络或类神经网络。神经网络是一种运算模型,由大量的节点(或称神经元)之间相互 连接构成。每个节点代表一种特定的输出函数,称为激活函数(activation function)。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重,这相当于人工神经网络的记忆。网络的输出则依网络的连接方式,权重值和激励函数的不同而不同。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。

0x01 基础知识准备

本文需要读者了解以下内容:

激活函数ANN的工作原理ANN的学习原理梯度下降随机梯度下降前向网络反馈网络

对基础知识了解不太扎实的读者也不用担心,头条号后续会补充基础知识的相关文章。

0x02 环境搭建(Windows)

1、安装Anaconda,具体步骤请参考头条号文章《零基础入门到精通:Python大数据与机器学习之Python虚拟环境》

2、打开Anaconda Prompt

3、执行如下命令创建虚拟环境

conda create -n tensorflow python=3.5 anaconda

注意:

如果出现错误The path 'vcruntime140.dll' specified in the package manifest cannot be found.

说明是没有安装vs2015,安装vs2015即可解决

4、激活虚拟环境

activate tensorflow

5、安装Theano、TensorFlow、Keras

conda install theano

conda install mingw libpython

pip install tensorflow

pip install keras

6、更新所有软件到最新版本

conda update --all

7、运行 Spyder:

spyder

0x03 问题描述

现有一个包含10000条银行客户数据的数据集,包含银行客户的一些基本信息,如:客户ID,姓名,信用积分,国家,性别,年龄,与银行签约时长,资产,产品数,是否有信用卡,是否活跃,年薪和是否已经解约(也就是抛弃了这家银行),所有数据都是独立的。目前需要根据此数据集预测哪些客户倾向与这家银行解约,这样可以达到提前对这些客户做相应措施的目的。要数据集的朋友请看评论。

如下图所示,exited为1表示已解约,exited为0表示未解约

0x04 创建ANN模型

创建ANN模型分为两部分,第一部分为数据处理,第二部分为创建ANN模型。

本文问题为分类问题,我们需要筛选能够影响客户去留的输入数据,和客户留下或者离开的输出数据。

数据处理步骤如下:

1、导入需要的库

在spyder左侧的编辑框输入以下内容,并按control+enter执行它们

import numpy as np

import matplotlib.pyplot as plt

import pandas as pd

2、导入数据集

执行下面代码

dataset = pd.read_csv('Churn_Modelling.csv')

X = dataset.iloc[:, 3:13].values

y = dataset.iloc[:, 13].values

dataset,X,y变量分别为:

dataset

X

y

3、将分类变量列转换成二进制数。

执行如下语句:

from sklearn.preprocessing import LabelEncoder, OneHotEncoder

labelencoder_X_1 = LabelEncoder()

X[:, 1] = labelencoder_X_1.fit_transform(X[:, 1])

labelencoder_X_2 = LabelEncoder()

X[:, 2] = labelencoder_X_2.fit_transform(X[:, 2])

onehotencoder = OneHotEncoder(categorical_features = [1])

X = onehotencoder.fit_transform(X).toarray()

X = X[:, 1:]

其中涉及到了OneHot编码的知识。简单来说就是将每种分类用二进制的一位表示,是哪种分类哪一位就是1,其它位就是0。

执行之后的X如下图所示:

3、将数据集分为训练集和测试集

执行下面的代码:

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)

4、将数据进行特征缩放

from sklearn.preprocessing import StandardScaler

sc = StandardScaler()

X_train = sc.fit_transform(X_train)

X_test = sc.transform(X_test)

创建ANN模型步骤如下:

5、导入Keras库

import keras

from keras.models import Sequential

from keras.layers import Dense

6、初始化ANN

classifier = Sequential()

7、增加输入层和第一个隐含层

classifier.add(Dense(units = 6, kernel_initializer = 'uniform', activation = 'relu', input_dim = 11))

8、增加第二个隐含层

classifier.add(Dense(units = 6, kernel_initializer = 'uniform', activation = 'relu'))

9、增加输出层

classifier.add(Dense(units = 1, kernel_initializer = 'uniform', activation = 'sigmoid'))

10、编译ANN

classifier.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])

11、用训练集训练

classifier.fit(X_train, y_train, batch_size = 10, epochs = 100)

12、用测试集测试

y_pred = classifier.predict(X_test)

y_pred = (y_pred > 0.5)

13、生成混淆矩阵

from sklearn.metrics import confusion_matrix

cm = confusion_matrix(y_test, y_pred)

注意:

有些函数的详细使用方法在spyder里面有帮助,例如将光标放在Dense上,按control+i打开help文档

按ctrl+i

Dense类

0x05 结论

如下图所示,横向是测试集,纵向是预测结果。

准确率为85.25%

0x06 总结

本文介绍了什么是ANN,如何搭建实验环境,如何下载数据,数据预处理,使用ANN模型预测客户是否会解约。

例如应用训练好的模型预测客户是否会解约

现某客户信息如下:

Geography: FranceCredit Score: 600Gender: MaleAge: 40 years oldTenure: 3 yearsBalance: $60000Number of Products: 2Does this customer have a credit card ? YesIs this customer an Active Member: YesEstimated Salary: $50000

使用ANN模型预测他是否会解约:

new_prediction = classifier.predict(sc.transform(np.array([[0.0, 0, 600, 1, 40, 3, 60000, 2, 1, 1, 50000]])))

new_prediction = (new_prediction > 0.5)

答案是客户不会解约。

0x07 写在最后

下篇文章将介绍ANN的评价与优化。

本文是系列文章,后续还将以类似形式推出如下内容:

CNN(卷积神经网络)

RNN(循环神经网络)

SOMs(自组织特征映射神经网络)

Boltzmann Machine(玻尔兹曼机)

AutoEncoders(自动编码器)

Regression&Classification(回归和聚类)

本文到此就介绍完了,感谢大家的阅读。

标签: #自组织映射神经网络的应用