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 相关文章推荐
python3.3教程之模拟百度登陆代码分享
Jan 16 Python
Python自动连接ssh的方法
Mar 07 Python
浅谈pandas中shift和diff函数关系
Apr 08 Python
python3下实现搜狗AI API的代码示例
Apr 10 Python
使用python装饰器计算函数运行时间的实例
Apr 21 Python
Python找出微信上删除你好友的人脚本写法
Nov 01 Python
python实现多层感知器MLP(基于双月数据集)
Jan 18 Python
python处理大日志文件
Jul 23 Python
解决jupyter notebook显示不全出现框框或者乱码问题
Apr 09 Python
keras 权重保存和权重载入方式
May 21 Python
python 使用建议与技巧分享(四)
Aug 18 Python
python 如何读、写、解析CSV文件
Mar 03 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面向对象全攻略 (二) 实例化对象 使用对象成员
2009/09/30 PHP
模拟select的代码
2011/10/19 Javascript
php析构函数的具体用法小结
2014/03/11 Javascript
JavaScript数值转换的三种方式总结
2014/07/31 Javascript
jquery实现简单的无缝滚动
2015/04/15 Javascript
javascript与jquery动态创建html元素示例
2016/07/25 Javascript
Bootstrap基本组件学习笔记之input输入框组(9)
2016/12/07 Javascript
微信小程序tabBar用法实例详解
2017/12/04 Javascript
基于模板引擎Jade的应用(详解)
2017/12/12 Javascript
JS隐藏号码中间4位代码实例
2019/04/09 Javascript
vue.js实现图书管理功能
2019/09/24 Javascript
vue+elementUI组件table实现前端分页功能
2020/11/15 Javascript
微信小程序利用云函数获取手机号码
2019/12/17 Javascript
python Flask实现restful api service
2017/12/04 Python
Python实现利用163邮箱远程关电脑脚本
2018/02/22 Python
python 处理string到hex脚本的方法
2018/10/26 Python
python实现推箱子游戏
2020/03/25 Python
对pytorch网络层结构的数组化详解
2018/12/08 Python
Python3实现监控新型冠状病毒肺炎疫情的示例代码
2020/02/13 Python
详解django中Template语言
2020/02/22 Python
解决Keras自带数据集与预训练model下载太慢问题
2020/06/12 Python
keras实现theano和tensorflow训练的模型相互转换
2020/06/19 Python
阿拉伯世界最大的电子商务网站:Souq沙特阿拉伯
2016/10/28 全球购物
德国在线订购鲜花:Fleurop
2018/08/25 全球购物
老师对学生的寄语
2014/04/09 职场文书
4S店售后客服自我评价
2014/04/09 职场文书
关于孝道的演讲稿
2014/05/21 职场文书
小学学校评估方案
2014/06/08 职场文书
2014年秋季新学期寄语
2014/08/02 职场文书
快递员岗位职责
2014/09/12 职场文书
依法行政工作汇报材料
2014/10/28 职场文书
2014年法院工作总结
2014/11/24 职场文书
营业员岗位职责
2015/02/11 职场文书
MySQL锁机制
2021/04/05 MySQL
MySQL 逻辑备份与恢复测试的相关总结
2021/05/14 MySQL
MySQL数据库查询进阶之多表查询详解
2022/04/08 MySQL