Python制作数据预测集成工具(值得收藏)


Posted in Python onAugust 21, 2020

大数据预测是大数据最核心的应用,是它将传统意义的预测拓展到“现测”。大数据预测的优势体现在,它把一个非常困难的预测问题,转化为一个相对简单的描述问题,而这是传统小数据集根本无法企及的。从预测的角度看,大数据预测所得出的结果不仅仅是用于处理现实业务的简单、客观的结论,更是能用于帮助企业经营的决策。

在过去,人们的决策主要是依赖 20% 的结构化数据,而大数据预测则可以利用另外 80% 的非结构化数据来做决策。大数据预测具有更多的数据维度,更快的数据频度和更广的数据宽度。与小数据时代相比,大数据预测的思维具有 3 大改变:实样而非抽样;预测效率而非精确;相关关系而非因果关系。

而今天我们就将利用python制作可视化的大数据预测部分集成工具,其中数据在这里使用一个实验中的数据。普遍性的应用则直接从文件读取即可。其中的效果图如下:

Python制作数据预测集成工具(值得收藏)

实验前的准备

首先我们使用的python版本是3.6.5所用到的模块如下:

  • sklearn模块用来创建整个模型训练和保存调用以及算法的搭建框架等等。
  • numpy模块用来处理数据矩阵运算。
  • matplotlib模块用来可视化拟合模型效果。
  • Pillow库用来加载图片至GUI界面。
  • Pandas模块用来读取csv数据文件。
  • Tkinter用来创建GUI窗口程序。

数据的训练和训练的GUI窗口

经过算法比较,发现这里我们选择使用sklearn简单的多元回归进行拟合数据可以达到比较好的效果。

(1)首先是是数据的读取,通过设定选定文件夹函数来读取文件,加载数据的效果:

'''选择文件功能''' 
def selectPath(): 
  # 选择文件path_接收文件地址 
  path_ =tkinter.filedialog.askopenfilename() 
  # 通过replace函数替换绝对文件地址中的/来使文件可被程序读取 
  # 注意:\\转义后为\,所以\\\\转义后为\\ 
  path_ =path_.replace("/", "\\\\") 
  # path设置path_的值 
  path.set(path_) 
  return path 
 
# 得到的DataFrame读入所有数据 
data = pd.read_excel(FILENAME, header=0, usecols="A,B,C,D,E,F,G,H,I") 
# DataFrame转化为array 
DataArray = data.values 
# 读取已使用年限作为标签 
Y = DataArray[:, 8] 
# 读取其他参数作为自变量,影响因素 
X = DataArray[:, 0:8] 
# 字符串转变为整数 
for i in range(len(Y)): 
  Y[i] = int(Y[i].replace("年", "")) 
X = np.array(X) # 转化为array 
Y = np.array(Y) # 转化为array 
 
root = Tk() 
root.geometry("+500+260") 
# 背景图设置 
canvas = tk.Canvas(root, width=600, height=200, bd=0, highlightthickness=0) 
imgpath = '1.jpg' 
img = Image.open(imgpath) 
photo = ImageTk.PhotoImage(img) 
#背景图大小设置 
canvas.create_image(700, 400, image=photo) 
canvas.pack() 
path = StringVar() 
#标签名称位置 
label1=tk.Label(text = "目标路径:") 
label1.pack() 
e1=tk.Entry( textvariable = path) 
e1.pack() 
bn1=tk.Button(text = "路径选择", command = selectPath) 
bn1.pack() 
bn2=tk.Button(text = "模型训练", command = train) 
bn2.pack() 
bn3=tk.Button(text = "模型预测", command = test) 
bn3.pack() 
#标签按钮等放在背景图上 
canvas.create_window(50, 50, width=150, height=30, 
           window=label1) 
canvas.create_window(280, 50, width=300, height=30, 
           window=e1) 
canvas.create_window(510, 50, width=150, height=30, 
           window=bn1) 
canvas.create_window(50, 100, width=150, height=30, 
           window=bn2) 
canvas.create_window(510, 100, width=150, height=30, 
           window=bn3) 
 
root.mainloop()

效果如下可见:

Python制作数据预测集成工具(值得收藏)

(2)然后是数据的拟合和可视化模型效果:

# 模型拟合 
reg = LinearRegression() 
reg.fit(X, Y) 
# 预测效果 
predict = reg.predict(np.array([X[0]])) 
Y_predict = reg.predict(X) 
print(Y_predict) 
# 横坐标 
x_label = [] 
for i in range(len(Y)): 
  x_label.append(i) 
# 绘图 
fig, ax = plt.subplots() 
# 真实值分布散点图 
plt.scatter(x_label, Y) 
# 预测值分布散点图 
plt.scatter(x_label, Y_predict) 
# 预测值拟合直线图 
plt.plot(x_label, Y_predict) 
# 横纵坐标 
ax.set_xlabel('预测值与真实值模型拟合效果图') 
ax.set_ylabel('蓝色为真实值,黄色为预测值') 
# 将绘制的图形显示到tkinter:创建属于root的canvas画布,并将图f置于画布上 
canvas = FigureCanvasTkAgg(fig, master=root) 
canvas.draw() # 注意show方法已经过时了,这里改用draw 
canvas.get_tk_widget().pack() 
# matplotlib的导航工具栏显示上来(默认是不会显示它的) 
toolbar = NavigationToolbar2Tk(canvas, root) 
toolbar.update() 
canvas._tkcanvas.pack() 
#弹窗显示 
messagebox.showinfo(title='模型情况', message="模型训练完成!") 
其中的效果如下可见:

其中的效果如下可见:

Python制作数据预测集成工具(值得收藏)

模型的预测和使用

其中模型的预测主要通过两种方式进行预测,分别是:手动输入单个数据进行预测和读取文件进行预测。

其中手动输入数据进行预测需要设置更多的GUI按钮,其中代码如下:

#子窗口 
LOVE = Toplevel(root) 
LOVE.geometry("+100+260") 
LOVE.title = "模型测试" 
#子窗口各标签名 
label = ["上升沿斜率(v/us)", "下降沿斜率(v/us)", "脉宽(ns)", "低状态电平(mv)", "低电平方差(mv2)x10-3", "高状态电平(v)", "高电平方差(v2)", "信号质量因子"] 
Label(LOVE, text="1、输入参数预测", font=("微软雅黑", 20)).grid(row=0, column=0) 
#标签名称,字体位置 
Label(LOVE, text=label[0], font=("微软雅黑",10)).grid(row=1, column=0) 
Label(LOVE, text=label[1], font=("微软雅黑", 10)).grid(row=1, column=1) 
Label(LOVE, text=label[2], font=("微软雅黑", 10)).grid(row=1, column=2) 
Label(LOVE, text=label[3], font=("微软雅黑", 10)).grid(row=1, column=3) 
Label(LOVE, text=label[4], font=("微软雅黑", 10)).grid(row=1, column=4) 
Label(LOVE, text=label[5], font=("微软雅黑", 10)).grid(row=1, column=5) 
Label(LOVE, text=label[6], font=("微软雅黑", 10)).grid(row=1, column=6) 
Label(LOVE, text=label[7], font=("微软雅黑", 10)).grid(row=1, column=7) 
#编辑框位置和字体 
en1=tk.Entry(LOVE, font=("微软雅黑", 8)) 
en1.grid(row=2, column=0) 
en2=tk.Entry(LOVE, font=("微软雅黑", 8)) 
en2.grid(row=2, column=1) 
en3=tk.Entry(LOVE, font=("微软雅黑", 8)) 
en3.grid(row=2, column=2) 
en4=tk.Entry(LOVE, font=("微软雅黑", 8)) 
en4.grid(row=2, column=3) 
en5=tk.Entry(LOVE, font=("微软雅黑", 8)) 
en5.grid(row=2, column=4) 
en6=tk.Entry(LOVE, font=("微软雅黑", 8)) 
en6.grid(row=2, column=5) 
en7=tk.Entry(LOVE, font=("微软雅黑", 8)) 
en7.grid(row=2, column=6) 
en8=tk.Entry(LOVE, font=("微软雅黑", 8)) 
en8.grid(row=2, column=7) 
Label(LOVE, text="", font=("微软雅黑", 10)).grid(row=3, column=0) 
#测试输入框预测 
def pp(): 
  x=np.array([int(en1.get()),int(en2.get()),int(en3.get()),int(en4.get()),int(en5.get()),int(en6.get()),int(en7.get()),int(en8.get())]) 
  # 预测效果 
  predict = reg.predict(np.array([x])) 
  Label(LOVE, text="预测结果已使用年数为:"+str(predict[0])+"年", font=("微软雅黑", 10)).grid(row=4, column=3) 
  print(predict) 
Button(LOVE, text="预测:", font=("微软雅黑", 15),command=pp).grid(row=4, column=0) 
Label(LOVE, text="2、选择文件预测", font=("微软雅黑", 20)).grid(row=5, column=0) 
path1 = StringVar() 
label1 = tk.Label(LOVE,text="目标路径:", font=("微软雅黑", 10)) 
label1.grid(row=6, column=0) 
e1 = tk.Entry(LOVE,textvariable=path1, font=("微软雅黑", 10)) 
e1.grid(row=6, column=2) 
label = ["上升沿斜率(v/us)", "下降沿斜率(v/us)", "脉宽(ns)", "低状态电平(mv)", "低电平方差(mv2)x10-3", "高状态电平(v)", "高电平方差(v2)", 
       "信号质量因子"] 
  n = 0 
  for i in predict_value: 
    print(str(label) + "分别为" + str(X[n]) + "预测出来的结果为:" + str(i) + "年" + "\n") 
    f = open("预测结果.txt", "a") 
    f.write(str(label) + "分别为" + str(X[n]) + "预测出来的结果为:" + str(i) + "年" + "\n") 
    f.close() 
    f = open("result.txt", "a") 
    f.write(str(i) + "\n") 
    f.close() 
    n += 1 
  messagebox.showinfo(title='模型情况', message="预测结果保存在当前文件夹下的TXT文件中!") 
  os.system("result.txt") 
  os.system("预测结果.txt") 
Button(LOVE, text="预测:", font=("微软雅黑", 15), command=ppt).grid(row=7, column=0)

效果如下可见:

Python制作数据预测集成工具(值得收藏)

选择文件进行读取预测和模型训练数据的读取类似,代码如下:

#选择文件预测 
def selectPath1(): 
  # 选择文件path_接收文件地址 
  path_ =tkinter.filedialog.askopenfilename() 
  # 通过replace函数替换绝对文件地址中的/来使文件可被程序读取 
  # 注意:\\转义后为\,所以\\\\转义后为\\ 
  path_ =path_.replace("/", "\\\\") 
  # path设置path_的值 
  path1.set(path_) 
  return path 
bn1 = tk.Button(LOVE,text="路径选择", font=("微软雅黑", 10), command=selectPath1) 
bn1.grid(row=6, column=6) 
def ppt(): 
  try: 
    os.remove("预测结果.txt") 
    os.remove("result.txt") 
  except: 
    pass 
  # 文件的名字 
  FILENAME =path1.get() 
  # 禁用科学计数法 
  pd.set_option('float_format', lambda x: '%.3f' % x) 
  np.set_printoptions(threshold=np.inf) 
  # 得到的DataFrame读入所有数据 
  data =pd.read_excel(FILENAME, header=0, usecols="A,B,C,D,E,F,G,H") 
  # DataFrame转化为array 
  DataArray =data.values 
  # 读取其他参数作为自变量,影响因素 
  X = DataArray[:,0:8] 
  predict_value = reg.predict(X) 
  print(predict_value)

效果如下:

Python制作数据预测集成工具(值得收藏)

由于读取文件进行预测的话,数据较多故直接存储在TXT中方便查看

Python制作数据预测集成工具(值得收藏)

以上就是Python制作数据预测集成工具(值得收藏)的详细内容,更多关于python 数据预测的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python实现系统状态监测和故障转移实例方法
Nov 18 Python
Python创建模块及模块导入的方法
May 27 Python
Python通过90行代码搭建一个音乐搜索工具
Jul 29 Python
Windows安装Python、pip、easy_install的方法
Mar 05 Python
python爬取m3u8连接的视频
Feb 28 Python
python+pyqt5实现KFC点餐收银系统
Jan 24 Python
使用python实现离散时间傅里叶变换的方法
Sep 02 Python
python将字母转化为数字实例方法
Oct 04 Python
详解python tkinter包获取本地绝对路径(以获取图片并展示)
Sep 04 Python
Python使用grequests并发发送请求的示例
Nov 05 Python
Python中return函数返回值实例用法
Nov 19 Python
Python爬虫定时计划任务的几种常见方法(推荐)
Jan 15 Python
简述 Python 的类和对象
Aug 21 #Python
DRF框架API版本管理实现方法解析
Aug 21 #Python
Django rest framework分页接口实现原理解析
Aug 21 #Python
Python -m参数原理及使用方法解析
Aug 21 #Python
python使用布隆过滤器的实现示例
Aug 20 #Python
QT5 Designer 打不开的问题及解决方法
Aug 20 #Python
Python配置pip国内镜像源的实现
Aug 20 #Python
You might like
PHP下编码转换函数mb_convert_encoding与iconv的使用说明
2009/12/16 PHP
PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
2014/06/12 PHP
ThinkPHP查询返回简单字段数组的方法
2014/08/25 PHP
详谈phpAdmin修改密码后拒绝访问的问题
2017/04/03 PHP
Highslide.js是一款基于js实现的网页中图片展示插件
2020/03/30 Javascript
javascript 异步页面查询实现代码(asp.net)
2010/05/26 Javascript
为超链接加上disabled后的故事
2010/12/10 Javascript
侧栏跟随滚动的简单实现代码
2013/03/18 Javascript
js实现杯子倒水问题自动求解程序
2013/03/25 Javascript
js判断数据类型如判断是否为数组是否为字符串等等
2014/01/15 Javascript
jQuery回调函数的定义及用法实例
2014/12/23 Javascript
JavaScript中对象property的删除方法介绍
2014/12/30 Javascript
z-blog SyntaxHighlighter 长代码无法换行解决办法(基于jquery)
2015/11/18 Javascript
js实现StringBuffer的简单实例
2016/09/02 Javascript
vue2.0实现移动端的输入框实时检索更新列表功能
2018/05/08 Javascript
解决angularjs前后端分离调用接口传递中文时中文乱码的问题
2018/08/13 Javascript
解决vue axios的封装 请求状态的错误提示问题
2018/09/25 Javascript
js前端面试之同步与异步问题详解
2019/04/03 Javascript
JavaScript 预解析的4种实现方法解析
2019/09/03 Javascript
简单介绍Python中利用生成器实现的并发编程
2015/05/04 Python
python处理multipart/form-data的请求方法
2018/12/26 Python
简单了解Python生成器是什么
2019/07/02 Python
python实现函数极小值
2019/07/10 Python
树莓派极简安装OpenCv的方法步骤
2019/10/10 Python
html2canvas截图空白问题的解决
2020/03/24 HTML / CSS
世界上最大的乐谱选择:Sheet Music Plus
2020/01/18 全球购物
Bloomingdale’s阿联酋:选购奢华时尚、美容及更多
2020/09/22 全球购物
经典c++面试题四
2015/05/14 面试题
中专毕业生自荐信
2013/11/16 职场文书
大学秋游活动方案
2014/02/11 职场文书
《爱的教育》读书心得
2014/11/08 职场文书
小学生毕业评语
2014/12/26 职场文书
教师辞职书范文
2015/02/26 职场文书
2016高中社会实践心得体会范文
2016/01/14 职场文书
火锅店的开业营销方案范本!
2019/07/05 职场文书
Python中常见的反爬机制及其破解方法总结
2021/06/10 Python