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群及群心分别上不同颜色,将图片结果呈现在网页中。
结果呈现:
flask中使用matplotlib影片版本
kmeans介绍影片版本:
<<: Golang-sync.Map 高并发的神之好用方法
生命周期代表“从摇篮到坟墓”。该业务案例在项目“诞生”,正式授权和启动之前就已经存在。 .将解决方案...
延续上篇所提到的,接着我们要从第三点开始介绍 三res-----------资源目录 今天介绍res...
今天来教大家要怎麽在App上播放Youtube影片! 我们要用的是WebKitView来达成这个功能...
成绩单上有国,英,数,物理四科 分数分别70、89、72、93 这时候我们就可以用阵列将他们绑再一起...
先前我们介绍过了阶层式状态,让我们能将一个状态向下描述得更精确,比如以之前的 input 元件状态机...