#-*- coding: utf-8 -*-
import os
import pandas as pd
from random import shuffle
datafile = '../data/model.xls'
data = pd.read_excel(datafile)
data = data.as_matrix()
shuffle(data)
p = 0.8 #设置训练数据比例
train = data[:int(len(data)*p), :]
test = data[int(len(data)*p):, :]
###构建神经网络分类模型
from keras.models import Sequential #导入神经网络初始化函数
from keras.layers.core import Dense, Activation #导入神经网络层函数、激活函数
netfile = '../tmp/net.model' #构建的神经网络模型存储路径
net = Sequential() #建立神经网络
net.add(Dense(input_dim = 3, units = 10)) #添加输入层(3节点)到隐藏层(10节点)的连接
net.add(Activation('relu')) #隐藏层使用relu激活函数
net.add(Dense(input_dim = 10, units = 1)) #添加隐藏层(10节点)到输出层(1节点)的连接
net.add(Activation('sigmoid')) #输出层使用sigmoid激活函数
net.compile(loss = 'binary_crossentropy', optimizer = 'adam', metrics=['accuracy']) #编译模型,使用adam方法求解
net.fit(train[:, :3], train[:, 3], epochs=1000, batch_size=1) #训练模型,循环1000次
net.save_weights(netfile) #保存模型
#绘制混淆矩阵
from cm_plot import * #导入自行编写的混淆矩阵可视化函数
from sklearn.tree import DecisionTreeClassifier #导入决策树模型
from sklearn.metrics import confusion_matrix #导入混淆矩阵函数
predict_result = net.predict_classes(train[:, :3]).reshape(len(train)) #预测结果变形
cm = confusion_matrix(train[:, 3], predict_result) #混淆矩阵
import matplotlib.pyplot as plt #导入作图库
plt.matshow(cm, cmap=plt.cm.Greens) #画混淆矩阵图,配色风格使用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') #坐标轴标签
plt.show() #显示作图结果
treefile = '../tmp/tree.pkl' #模型输出名字
tree = DecisionTreeClassifier() #建立决策树模型
tree.fit(train[:, :3],train[:, 3]) #训练
#保存模型
from sklearn.externals import joblib
joblib.dump(tree, treefile)
from sklearn.metrics import roc_curve #导入ROC曲线函数
import matplotlib.pyplot as plt
fpr1, tpr1, thresholds1 = roc_curve(test[:, 3], net.predict(test[:, :3]).reshape(len(test)), pos_label=1)
fpr2, tpr2, thresholds2 = roc_curve(test[:, 3], tree.predict_proba(test[:, :3])[:, 1], pos_label=1)
plt.plot(fpr1, tpr1, linewidth=2, label = 'ROC of LM', color = 'blue') #作出ROC曲线
plt.plot(fpr2, tpr2, linewidth=2, label = 'ROC of CART', color = 'green')
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() #显示作图结果
没有合适的资源?快使用搜索试试~ 我知道了~
电力窃漏电用户自动识别 源码
共27个文件
py:9个
xls:7个
npy:4个
需积分: 50 78 下载量 123 浏览量
2018-01-07
21:09:27
上传
评论 16
收藏 60KB ZIP 举报
温馨提示
python数据挖掘-电力窃漏电用户自动识别,书上的源码有错误,现已经完全改正。
资源推荐
资源详情
资源评论
收起资源包目录
chapter6.zip (27个子文件)
chapter6
拓展思考
拓展思考样本数据.xls 49KB
demo
data
model.xls 40KB
missing_data.xls 25KB
code
cm_plot.py 571B
6-3_lm_model.py 2KB
6-2_dt_model.py 2KB
6-1_Lagrange_interpolation.py 1011B
__pycache__
cm_plot.cpython-36.pyc 657B
tmp
tree.pkl_04.npy 96B
tree.pkl_03.npy 2KB
net.model 8KB
tree.pkl_02.npy 800B
tree.pkl 4KB
tree.pkl_01.npy 84B
missing_data_processed.xls 6KB
test
data
model.xls 40KB
missing_data.xls 25KB
code
cm_plot.py 622B
Mix-lm-dt_model.py 3KB
lm_model.py 3KB
Lagrange_interpolation.py 1011B
__pycache__
cm_plot.cpython-36.pyc 655B
dt_model.cpython-36.pyc 1KB
dt_model.py 2KB
tmp
net.model 14KB
tree.pkl 5KB
missing_data_processed.xls 6KB
共 27 条
- 1
资源评论
可行的code
- 粉丝: 680
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功