当前位置: 首页 > 面试题库 >

sklearn:在测试数据集上计算k均值的准确性得分

曹理
2023-03-14
问题内容

我正在对30个带有2个聚类的样本进行k均值聚类(我已经知道有两个类)。我将数据分为训练集和测试集,并尝试计算测试集的准确性得分。但是有两个问题:首先,我不知道我是否真的可以针对k均值聚类做到这一点(测试集上的准确性得分)。第二:如果我被允许这样做,那么我的实现是写的还是错误的。这是我尝试过的:

df_hist = pd.read_csv('video_data.csv')

y = df_hist['label'].values
del df_hist['label']
df_hist.to_csv('video_data1.csv')
X = df_hist.values.astype(np.float)

X_train, X_test,y_train,y_test =  cross_validation.train_test_split(X,y,test_size=0.20,random_state=70)
k_means = cluster.KMeans(n_clusters=2)
k_means.fit(X_train)
print(k_means.labels_[:])
print(y_train[:])

score = metrics.accuracy_score(y_test,k_means.predict(X_test))
print('Accuracy:{0:f}'.format(score))

k_means.predict(X_test)
print(k_means.labels_[:])
print(y_test[:])

但是,当我在 最后三行中 打印 测试集的k-means标签( k_means.predict(X_test)
print(k_means.labels [:]) )和y_test标签( _print(k_means.labels [:])_ )时,与安装X-
train时得到的标签相同,而不是为X测试生成的标签。知道我在这里做错了什么吗?我在评估k均值性能时所做的一切对吗?谢谢!


问题答案:

在评估准确性方面。您应该记住,k均值 不是分类工具 ,因此分析准确性不是一个好主意。您可以执行此操作,但这不是k-
means的目的。它应该找到一组最大的集群间距离的数据,而不使用您的标签进行训练。因此,通常使用RandIndex和其他聚类指标来测试k均值。为了使准确性最大化,您应该适合实际的分类器,例如kNN,逻辑回归,SVM等。

就代码本身而言,k_means.predict(X_test) 返回 标签,它不更新内部labels_字段,您应该这样做

print(k_means.predict(X_test))

此外,在python中,您不必(也不应该)用于[:]打印数组,只需执行

print(k_means.labels_)
print(y_test)


 类似资料:
  • 问题内容: 我正在寻找带有示例的k-means算法的Python实现来聚类和缓存我的坐标数据库。 问题答案: 更新:( 在最初回答之后十一年,可能是该进行更新的时候了。) 首先,您确定要使用k均值吗? 该页面很好地总结了一些不同的聚类算法。我建议您在图形之外,特别查看每种方法所需的参数,并确定您是否可以提供所需的参数(例如,k均值需要簇的数量,但是也许您不知道在开始之前就知道了)群集)。 以下是一

  • 问题内容: $fooValue = 100.68; $cowValue = 100.67; 这将显示“错误”。 我知道用Java做些什么。但是我不太擅长PHP,尤其是在计算方面。 请帮帮我。我是说如何成功? 问题答案: 浮点数是一种不精确的数据类型(就像所有浮点数据类型一样),因为在二进制之间进行转换可能会失去精度。这就是为什么当您需要高精度(精确)时不应该使用浮点运算的原因。 在PHP中,检查B

  • 问题内容: 这是我的问题,我有一个像这样的数据框: 我只想计算整个数据帧的平均值,因为以下方法不起作用: 然后我想出了: 但是,此技巧不适用于计算标准偏差。我最后的尝试是: 除了在后一种情况下,它使用了numpy中的mean()和std()函数。这不是平均值的问题,而是std的问题,因为pandas函数默认使用,而不是numpy的where 。 问题答案: 您可以将数据框转换为单列(将形状从5x3

  • 我想用excel计算三个月内三名员工的销售标准差和平均值。是否有一个公式可以根据所选员工姓名给出该公式?我希望它是一个可重复和可扩展的公式,适用于100名员工。另外,我不想在这里使用pivot功能,因为我想在pivot字段中使用std-dev和average。输入输入 输出

  • 问题内容: 我正在尝试根据前三个月的实际情况或预测来计算销售预测。 假设我要计算 每个 公司未来18个月的预测。 我正在查看去年的数据。一些公司有例如2个月的数据,而其他12个月等等。 我已经搜索并找到了许多不同的解决方案,但是所有这些解决方案都只考虑了实际情况。 我认为我必须进行递归CTE,但我无法弄清楚。 请帮忙 :) 问题答案: 因此,您想要基于先前的移动平均线的移动平均线:)我认为,在SQ

  • $k$均值聚类算法(k-means clustering algorithm) 在聚类的问题中,我们得到了一组训练样本集 ${x^{(1)},...,x^{(m)}}$,然后想要把这些样本划分成若干个相关的“类群(clusters)”。其中的 $x^{(i)}\in R^n$,而并未给出分类标签 $y^{(i)}$ 。所以这就是一个无监督学习的问题了。 $K$ 均值聚类算法如下所示: 随机初始化(