机器学习聚类

发布于:2025-04-16 ⋅ 阅读:(35) ⋅ 点赞:(0)

以下是一个简单的使用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 库将聚类结果以散点图的形式展示在网页


网站公告

今日签到

点亮在社区的每一天
去签到