小编Mat*_*oon的帖子

这个 kmeans 聚类的最佳 k 是多少?(肘点图)

我正在尝试使用 kmeans 寻找在首尔地铁站附近开设咖啡店的最佳地点。

包括的功能有:

  1. 每月在特定车站下车的总人数
  2. 特定车站附近的租金
  3. 特定车站附近现有咖啡店的数量

我决定使用肘点来找到最好的 k。在运行 kmeans 之前,我确实对所有功能进行了标准化。

在此处输入图片说明

现在肘点似乎是 k=3(或者 k=2),但我认为 SSE 对于肘点来说太高了。

同样使用 k=3,很难从集群中获得洞察力,因为只有三个集群。

使用 k=5 是获得洞察力的最佳选择。

即使不是肘点,使用 k=5 是否合理?

还是首先 ​​kmeans 不是一个好的选择?

python cluster-analysis machine-learning k-means python-3.x

4
推荐指数
2
解决办法
1333
查看次数

C 函数通常比 OOP 语言的方法有更多的参数吗?

我不得不编写一个超过 600 行和大约 25 个函数的 C 程序。这是我写过的最长的 C 代码。

我注意到一些函数有超过 5 个参数。直接从 main() 调用的那些有更多的参数。它离 main() 越远,越少。

我还注意到我经常不得不将参数传递给函数,不是因为该函数直接使用该参数,而是该函数调用另一个需要该参数的函数。

所以它看起来像

void f1(int a, int b,..., int bar){
    int foo = f2(bar); // the only time 'bar' is used in f1
    .
    .
    .
}
Run Code Online (Sandbox Code Playgroud)

我试图尽量减少全局变量的使用,但我不得不声明一些全局变量,因为有些参数变得过于冗余。基本上我必须将这些参数传递给每个函数。

我不是一个有经验的程序员,但是当我用 Java 编程时,我认为我不需要编写一个超过 5 个参数的方法。

在 C 中传递比其他语言更多的参数是否正常?这只是过程式编程与面向对象编程的本质吗?还是我只是在写不好的 C 代码?

c arguments procedural-programming function

2
推荐指数
1
解决办法
145
查看次数

指针) 有没有可能 (ptr + 1) 已经被占用?

char data;
char *ptr = &data;
*ptr = 3;
*(ptr+1) = 5;
Run Code Online (Sandbox Code Playgroud)

所以我正在研究指针,有一件事我很不明白。

当使用指针数组,你怎么知道地址ptr+1ptr+2等没有被其他变量占用?

例如,该地址ptr + 1已被使用,如果我尝试将 5 放入其中,程序是否有可能崩溃?

或者更极端的例子是什么ptr + 1000

还是编译器确保它永远不会发生?

c c++ memory arrays pointers

1
推荐指数
1
解决办法
68
查看次数