【问题标题】:Should I chose k = 3 in this case of KNN classifier? [closed]在这种 KNN 分类器的情况下,我应该选择 k = 3 吗? [关闭]
【发布时间】:2020-12-10 15:12:34
【问题描述】:

我有维度为 (2055, 95) 的数据。我将其拆分为训练数据:(1640, 95) 和验证数据:(415, 95)。

我构建了一个 KNN 分类器,但不知道选择哪个 k 参数,因此将 k 设置在范围内并找出哪个 k 适合我的问题。但我得到了这些数据:

我知道如果我们选择 k = 1 意味着模型过度拟合。所以在我的情况下,最好的 k 是 3?

【问题讨论】:

  • 这不是编程问题,这里是题外话。
  • 请参阅machine-learningtag info中的介绍和注意

标签: machine-learning linear-regression knn


【解决方案1】:

为了确定 KNN 中的最佳 k 参数,我建议绘制不同 k 值的轮廓系数,并应用肘法确定哪个最合适。

silhouette_coefficients = []

for k in range(2, 11):
    kmeans = KMeans(n_clusters=k, **kmeans_kwargs)
    kmeans.fit(scaled_features)
    score = silhouette_score(scaled_features, kmeans.labels_)
    silhouette_coefficients.append(score)


plt.style.use("fivethirtyeight")
    plt.plot(range(2, 11), silhouette_coefficients)
    plt.xticks(range(2, 11))
    plt.xlabel("Number of Clusters")
    plt.ylabel("Silhouette Coefficient")
    plt.show()

对于这种情况,最优值将低于 3,因为在 x=3 之后变化率会降低。

您可以查看https://code-ai.mk/kmeans-elbow-method-tutorial/ 以获取有关肘部方法的更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-04
    • 2021-10-29
    • 2010-09-05
    • 1970-01-01
    • 2011-01-17
    • 2022-07-22
    • 1970-01-01
    • 2011-10-26
    相关资源
    最近更新 更多