首页 > 代码库 > 利用LM神经网络和决策树去分类
利用LM神经网络和决策树去分类
# -*- coding: utf-8 -*-import pandas as pdfrom scipy.interpolate import lagrangefrom matplotlib import pyplot as pltfrom random import shufflefrom 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=http://www.mamicode.com/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 = http://www.mamicode.com/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神经网络和决策树去分类
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。