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使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码
Mar 04 Python
python和mysql交互操作实例详解【基于pymysql库】
Jun 04 Python
python读写csv文件方法详细总结
Jul 05 Python
解决Tensorflow占用GPU显存问题
Feb 03 Python
在PyTorch中使用标签平滑正则化的问题
Apr 03 Python
Python绘制全球疫情变化地图的实例代码
Apr 20 Python
基于python实现检索标记敏感词并输出
May 07 Python
django中嵌套的try-except实例
May 21 Python
基于Python快速处理PDF表格数据
Jun 03 Python
使用TensorBoard进行超参数优化的实现
Jul 06 Python
用python绘制樱花树
Oct 09 Python
Python importlib模块重载使用方法详解
Oct 13 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下HTTP Response中的Chunked编码实现方法
2008/11/19 PHP
session在PHP大型web应用中的使用
2011/06/25 PHP
完美实现wordpress禁止文章修订和自动保存的方法
2014/11/03 PHP
php图像处理类实例
2015/07/28 PHP
PHP正则表达式之捕获组与非捕获组
2015/11/06 PHP
PHP类相关知识点实例总结
2016/09/28 PHP
用js生产批量批处理执行命令
2008/07/28 Javascript
javascript深入理解js闭包
2010/07/03 Javascript
基于jQuery判断两个元素是否有重叠部分的代码
2012/07/25 Javascript
Jquery uploadify图片上传插件无法上传的解决方法
2013/12/16 Javascript
24款热门实用的jQuery插件推荐
2014/12/24 Javascript
JS简单计算器实例
2015/01/20 Javascript
Grunt入门教程(自动任务运行器)
2015/08/06 Javascript
JS功能代码集锦
2016/05/04 Javascript
利用nodejs监控文件变化并使用sftp上传到服务器
2017/02/18 NodeJs
vue router学习之动态路由和嵌套路由详解
2017/09/21 Javascript
深入浅析ng-bootstrap 组件集中 tabset 组件的实现分析
2019/07/19 Javascript
关于vue里页面的缓存详解
2019/11/04 Javascript
[01:55]2014DOTA2国际邀请赛 BBC正赛第一天总结
2014/07/10 DOTA
[36:20]KG vs SECRET 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
python中使用smtplib和email模块发送邮件实例
2014/04/22 Python
python实现同时给多个变量赋值的方法
2015/04/30 Python
利用python写个下载teahour音频的小脚本
2017/05/08 Python
Python使用win32com实现的模拟浏览器功能示例
2017/07/13 Python
python批量读取txt文件为DataFrame的方法
2018/04/03 Python
Python在Matplotlib图中显示中文字体的操作方法
2019/07/29 Python
Python文件操作模拟用户登陆代码实例
2020/06/09 Python
英国豪华家具和经典家居饰品购物网站:OKA
2020/06/05 全球购物
小学生倡议书范文
2014/05/13 职场文书
2015年元旦晚会活动总结(学生会)
2014/11/28 职场文书
社区文明倡议书
2015/04/28 职场文书
生日赠语
2015/06/23 职场文书
幼儿教师远程研修感悟
2015/11/18 职场文书
2019年教师节:送给所有老师的祝福语
2019/09/05 职场文书
python如何正确使用yield
2021/05/21 Python
详解Laravel框架的依赖注入功能
2021/05/27 PHP