这篇文章主要介绍了python聚类算法解决方案(rest接口/mpp数据库/json数据/下载图片及数据),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
1. 场景描述
今天介绍下经典的K-means聚类算法,算法原理就不介绍了,只从代码层面进行介绍,包含:rest接口、连接mpp数据库、回传json数据、下载图片及数据。
2. 解决方案
2.1 项目套路
(1)python经典算法是单独的服务器部署,提供rest接口出来,供java平台调用,交互的方式是http+json;
(2)数据从mpp数据库-Greenplum中获取;
(3)返回的数据包括三个:1是生成聚类图片的地址;2是聚类项目完整数据地址;3是返回给前端的200条json预览数据。
2.2 restapi类
分两个类,第一个是restapi类,封装rest接口类,其他的经典算法在这里都有对应的方法,是个公共类。
完整代码:
# -*- coding: utf-8 -*- from flask import Flask, request, send_from_directoryfrom k_means import execimport loggingapp = Flask(__name__) #1.服务器上更改为服务器地址,用于存放数据dirpath = 'E:uanjianlaowang' #2. 测试连通性,软件老王@app.route('/')def index(): return "Hello, World!" #3. k-means算法 软件老王@app.route('/getKmeansInfoByLaowang', methods=['POST'])def getKmeansInfoByLaowang(): try: result = exec(request.get_json(), dirpath) except IndexError as e: logging.error(str(e)) return 'exception:' + str(e) except KeyError as e: logging.error(str(e)) return 'exception:' + str(e) except ValueError as e: logging.error(str(e)) return 'exception:' + str(e) except Exception as e: logging.error(str(e)) return 'exception:' + str(e) else: return result #4.文件下载(图片及csv)@app.route("/")def getImages(filename): return send_from_directory(dirpath, filename, as_attachment=True) #5.启动if __name__ == '__main__': app.run(host="0.0.0.0