我有一个特定学校的学生数据库。
student_name |math | science| english| social
---------------------------------------------
Aakas | 80 | 70 | 90 | 55
Aphi | 30 | 80 | 67 | 79
Geeta | 60 | 89 | 95 | 87
pradip | 70 | 78 | 67 | 65
Nikita | 45 | 78 | 90 | 48
Shanti | 69 | 90 | 67 | 84
学生数字n是1000。
我需要做的是将学生分成以下几个小时。组(例如m为250)。这样一个群体中的每个主体都应该具有接近平均的分数。对于上述情况,仅考虑数学,数学的平均分数为59(对于给定的六名学生)。如果我们将六名学生分成两组,每组包含3名学生。第1组= {Aakas, Abhi, Geeta}
第2组= {Pradip, Nikita, Shanti}
第1组的数学平均值56.67
接近59
第2组,数学中的平均61.33
接近59
仅考虑数学就是这种情况。我们必须考虑所有科目,使得每组的平均分数接近整个学生的个别科目的平均分。怎么解决?
答案 0 :(得分:1)
数据库TABLE不是SPREADSHEET。
无论您认为自己正在尝试解决什么问题,第一步都是将您的架构规范化为更多类似于以下内容的内容:
+--------------+---------+-------+
| student_name | subject | score |
+--------------+---------+-------+
| Aakas | math | 80 |
| Aphi | math | 30 |
| Geeta | math | 60 |
| pradip | math | 70 |
| Nikita | math | 45 |
| Shanti | math | 69 |
| Aakas | science | 70 |
| Aphi | science | 80 |
| Geeta | science | 89 |
| pradip | science | 78 |
| Nikita | science | 78 |
| Shanti | science | 90 |
| Aakas | english | 90 |
| Aphi | english | 67 |
| Geeta | english | 95 |
| pradip | english | 67 |
| Nikita | english | 90 |
| Shanti | english | 67 |
| Aakas | social | 55 |
| Aphi | social | 79 |
| Geeta | social | 87 |
| pradip | social | 65 |
| Nikita | social | 48 |
| Shanti | social | 84 |
+--------------+---------+-------+
答案 1 :(得分:0)
这是一个简单的群集问题,您可以使用K-Means