利用LM神经网络和决策树去分类

Posted 你若精彩,蝴蝶自来

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用LM神经网络和决策树去分类相关的知识,希望对你有一定的参考价值。

# -*- coding: utf-8 -*-
import pandas as pd
from scipy.interpolate import lagrange
from matplotlib import pyplot as plt
from random import shuffle
from keras.models import Sequential #导入神经网络初始化函数
from keras.layers.core import Dense, Activation #导入神经网络层函数、激活函数
# inputfile=\'F:\\\\python数据挖掘\\\\chapter6\\\\chapter6\\\\demo\\\\data\\\\missing_data.xls\'
# outputfile=\'F:\\\\python数据挖掘\\\\chapter6\\\\chapter6\\\\demo\\\\tmp\\\\missing_data_sale.xls\'
# data=pd.read_excel(inputfile,header=None)

datafile = \'F:\\\\python数据挖掘\\\\chapter6\\\\chapter6\\\\demo\\\\data\\\\model.xls\'
data = pd.read_excel(datafile)
#print(data)
#print(type(data))
data = data.as_matrix()#转换成矩阵或者是数组型,对数据进行操作。
shuffle(data)#随机扰乱数据
#print(data)

p = 0.8 #设置训练数据比例
train = data[:int(len(data)*p),:]
test = data[int(len(data)*p):,:]
#
#
netfile = \'F:\\\\python数据挖掘\\\\chapter6\\\\chapter6\\\\demo\\\\tmp\\\\net.model1\' #构建的神经网络模型存储路径
#
net = Sequential() #建立神经网络
net.add(Dense(input_dim=3,output_dim=10)) #添加输入层(3节点)到隐藏层(10节点)的连接
#net.add(Dense(32, input_dim=16))
net.add(Activation(\'relu\')) #隐藏层使用relu激活函数
net.add(Dense(input_dim=10, output_dim=1)) #添加隐藏层(10节点)到输出层(1节点)的连接
net.add(Activation(\'sigmoid\')) #输出层使用sigmoid激活函数
net.compile(loss = \'binary_crossentropy\', optimizer = \'adam\', class_mode = "binary") #编译模型,使用adam方法求解

net.fit(train[:,:3], train[:,3], nb_epoch=2, batch_size=1) #训练模型,循环1000次,Keras模块中的batch_size指的就是小批量梯度下降法。
net.save_weights(netfile) #保存模型

#predict_result = net.predict_classes(train[:,:3]).reshape(len(train)) #预测结果变形
\'\'\'这里要提醒的是,keras用predict给出预测概率,predict_classes才是给出预测类别,而且两者的预测结果都是n x 1维数组,而不是通常的 1 x n\'\'\'
#
# from cm_plot import * #导入自行编写的混淆矩阵可视化函数
# cm_plot(train[:,3], predict_result).show() #显示混淆矩阵可视化结果
#
from sklearn.metrics import roc_curve #导入ROC曲线函数
#
predict_result = net.predict(test[:,:3]).reshape(len(test))
fpr, tpr, thresholds = roc_curve(test[:,3], predict_result, pos_label=1)
print(fpr,tpr)
plt.plot(fpr, tpr, linewidth=2, label = \'ROC of LM\') #作出ROC曲线
plt.xlabel(\'False Positive Rate\') #坐标轴标签
plt.ylabel(\'True Positive Rate\') #坐标轴标签
plt.ylim(0,1.05) #边界范围
plt.xlim(0,1.05) #边界范围
plt.legend(loc=4) #图例
plt.show() #显示作图结果

结果画出的图如上面所示。

主要步骤为:

第一:从原始数据中随机性的抽取数据,然后进行数据探索分析数据,数据探索分析包括:

1.数据清洗

2.缺失值处理

3.数据变换

第二:建模样本数据

1.模型训练

2.模型评价

第三:预处理后诊断数据

第四:自动诊断

第五:根据诊断结果进行模型的优化与重构

最后,再进行模型的训练和评价。

以上是关于利用LM神经网络和决策树去分类的主要内容,如果未能解决你的问题,请参考以下文章

Java代码利用朴素贝叶斯分类算法实现信息分类

Java代码利用朴素贝叶斯分类算法实现信息分类

基于MATLAB的神经网络BP算法改进LM算法的交通流量的源代码!

利用Adaboost提高分类性能

决策树算法 CART和C4.5决策树有啥区别?各用于啥领域?

机器学习分类