当前位置: 首页 > 资讯 >

伸缩自如的Flask [day 26] Flask with ML

github:
https://github.com/wilsonsujames/ML_on_web

资料集:
https://www.kaggle.com/shwetabh123/mall-customers

这次是用机器学习中的kmeans演算法作范例,如何将AI执行出来预测的结果视觉化。

首先是模型的训练 kmean_train.py :


#load 进资料集
dataset = pd.read_csv('./Mall_Customers.csv')

#可以切分训练集
X= dataset.iloc[:150, [3,4]].values

#从分2类到分11类来评估最佳分群数
silhouette_avg = []
for i in range(2,11):
    try:
        kmeans = KMeans(n_clusters= i, init='k-means++').fit(X)
        silhouette_avg.append(silhouette_score(X, kmeans.labels_)) 
    except:
        pass

indArr,peak_heightsDict=find_peaks(silhouette_avg)

# 在silhouette_avg这个list中,最高点index为三,最佳分群数为5
RowNumCategories=indArr[0]+2

# 模型预测及画图
kmeansmodel = KMeans(n_clusters= RowNumCategories, init='k-means++')
y_kmeans= kmeansmodel.fit_predict(X)

# 利用joblib 来将模型储存
dump(kmeansmodel, 'kmean.joblib') 

在dashboard.html的部分,放置了图片及图片来源:

<div class="container">
  <img src="{{url_for('plot_png')}}" alt="my plot">
</div>

在server.py的部分,由plot_png这个function来提供图片:

@app.route('/plot')
def plot_png():

    dataset = pd.read_csv('./Mall_Customers.csv')
    # X= dataset.iloc[151:202, [3,4]].values
    X= dataset.iloc[:, [3,4]].values
    kmean_clf = load('kmean.joblib') 
    y_kmeans= kmean_clf.fit_predict(X)

    Kmeansfig = Figure()
    axis = Kmeansfig.add_subplot(1, 1, 1)
    axis.grid(color='lightgrey')
    axis.scatter(X[y_kmeans == 0, 0], X[y_kmeans == 0, 1], s = 100, c = 'red', label = ' 1')
    axis.scatter(X[y_kmeans == 1, 0], X[y_kmeans == 1, 1], s = 100, c = 'blue', label = '2')
    axis.scatter(X[y_kmeans == 2, 0], X[y_kmeans == 2, 1], s = 100, c = 'green', label = '3')
    axis.scatter(X[y_kmeans == 3, 0], X[y_kmeans == 3, 1], s = 100, c = 'cyan', label = ' 4')
    axis.scatter(X[y_kmeans == 4, 0], X[y_kmeans == 4, 1], s = 100, c = 'magenta', label = '5')
    axis.scatter(kmean_clf.cluster_centers_[:, 0], 
    kmean_clf.cluster_centers_[:, 1], s = 300, c = 'yellow', label = 'Centroids')
    axis.set_title("K-means demo")
    axis.legend()

    output = io.BytesIO()
    FigureCanvas(Kmeansfig).print_png(output)
    
    return Response(output.getvalue(), mimetype="image/png")

使用joblib来load进模型物件,预测给定的pandas资料,将预测的5群及群心分别上不同颜色,将图片结果呈现在网页中。

结果呈现:

https://ithelp.ithome.com.tw/upload/images/20210609/20122678fT8UILP4ld.png

flask中使用matplotlib影片版本

kmeans介绍影片版本:


相关文章:

  • [C# WinForm] 建立第一个应用程序 Hello World
  • 第 27 型 - 路由 (Router) - 参数传递
  • Day 08 CSS <文本属性>
  • Day28-机器学习(2) KNN
  • Day 01-前言
  • C国某大学生在校看色色的东西被简讯通知「...文明上网...写心得报告 」
  • Day 13 实作调色盘App(1/3)
  • C# 入门之逻辑判断(下)
  • DAY22 MongoDB Profiler 几个指令抓出拖垮系统的元凶
  • 视觉化当日趋势图(3)-取得python api方法
  • Day 6:Hello....iOS world! 建立第一个KMM专案(iOS)
  • [Day16] MySQL 简介
  • IOS、Python自学心得30天 Day-8 tensorflow.python.keras.optimizer_v2.adam改版问题
  • 第7砍 - 第一滴血
  • Day05 媒体协商与SDP
  • 海外营销周报:谷歌广告将推出动态排除列表,报告显示2020年美国数字广告营收增长12%
  • 国外抗攻击服务器推荐:DDOS高防服务器推荐
  • 最新虚拟信用卡无限开卡渠道大全
  • Akaxin:开源社交软件/加密聊天/打造你自己的社交产品
  • MySQL mysqldump怎么用?MySQL怎么用mysqldump导入导出数据
  • Google SEO优化排名的技巧:做好这20件事情谷歌排名必定上去
  • 瑞士银行开户指南:0门槛开户欧洲银行卡教程【Dukascopy开户教程】
  • 海外营销周报:Facebook应用下载量下降30%,TikTok在欧洲测试应用内购买…
  • PayPal绑定国内手机卡的方法:国外PayPal怎么绑定国内手机号
  • 301 重定向怎么做?301 重定向教程和方法
  • Yandex Money虚拟卡申请:俄罗斯银行卡预付卡申请教程
  • 如何使用Hostinger的邮箱服务,Hostinger免费企业邮箱设置教程
  • Astra主题产品方案名称更新,附减价20%优惠码
  • Google SEO入门:如何做好谷歌网站排名SEO
  • 搬瓦工VPS优惠码/ 促销码 、最新BandwagonHost官网促销