以下是一个简单的使用Python实现的前后端结合的机器学习聚类示例代码,前端使用Flask框架搭建一个简单的Web服务来展示聚类结果,后端使用Scikit-learn库进行K-Means聚类算法的实现。
假设我们有一个简单的二维数据点集,对其进行聚类,并在网页上展示聚类的结果。
首先,确保你已经安装了必要的库: flask 、 numpy 、 sklearn 。可以使用 pip install flask numpy scikit-learn 来安装。
以下是完整的代码:
python
from flask import Flask, render_template
import numpy as np
from sklearn.cluster import KMeans
app = Flask(__name__)
# 生成一些随机数据点(示例数据)
np.random.seed(0)
X = np.random.rand(100, 2)
# 使用K-Means聚类算法进行聚类
kmeans = KMeans(n_clusters=3, random_state=0).fit(X)
labels = kmeans.labels_
# 定义路由,渲染模板并传递数据
@app.route('/')
def index():
data = {
'points': X.tolist(),
'labels': labels.tolist()
}
return render_template('index.html', data=data)
if __name__ == '__main__':
app.run(debug=True)
然后,创建一个名为 templates 的文件夹,在该文件夹下创建一个 index.html 文件,内容如下:
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>聚类结果展示</title>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
</head>
<body>
<canvas id="clusteringChart" width="400" height="400"></canvas>
<script>
const data = {{ data|tojson }};
const points = data.points;
const labels = data.labels;
const ctx = document.getElementById('clusteringChart').getContext('2d');
const chart = new Chart(ctx, {
type: 'scatter',
data: {
datasets: []
},
options: {
scales: {
x: {
type: 'linear',
position: 'bottom'
},
y: {
type: 'linear'
}
}
}
});
for (let i = 0; i < 3; i++) {
const clusterPoints = [];
for (let j = 0; j < points.length; j++) {
if (labels[j] === i) {
clusterPoints.push({
x: points[j][0],
y: points[j][1]
});
}
}
chart.data.datasets.push({
label: `Cluster ${i}`,
data: clusterPoints,
borderColor: getRandomColor(),
backgroundColor: getRandomColor(),
pointRadius: 5
});
}
chart.update();
function getRandomColor() {
const letters = '0123456789ABCDEF';
let color = '#';
for (let i = 0; i < 6; i++) {
color += letters[Math.floor(Math.random() * 16)];
}
return color;
}
</script>
</body>
</html>
上述代码中,后端使用 Flask 框架搭建了一个简单的Web服务,生成了一些随机数据点并使用 KMeans 聚类算法进行聚类,然后将数据点和聚类标签传递给前端。前端使用 Chart.js 库将聚类结果以散点图的形式展示在网页