k 表示聚类方法得分为负
k means cluster method score negative
伙计们。我还是一个尝试学习 ML 的初学者,所以请原谅我提出这样一个简单的问题。我有一个来自 UCI ML Repository 的数据集。因此,开始应用各种无监督算法,其中我还应用了 K 均值聚类算法。当我打印出准确度分数时,它是负数,不止一次,而是很多次。据我所知,分数不是负数。那么你能帮我看看为什么它是负面的吗?
感谢任何帮助。
import pandas as pd
import numpy as np
a = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/abalone/abalone.data', names = ["a", "b", "c", "d","e","f","g","h","i"])
b = a
c = b.filter(a.columns[[8]], axis=1)
a.drop(a.columns[[8]], axis=1, inplace=True)
from sklearn.preprocessing import LabelEncoder
le1 = LabelEncoder()
le1.fit(a.a)
a.a = le1.transform(a.a)
from sklearn.preprocessing import OneHotEncoder
x = np.array(a)
y = np.array(c)
ohe = OneHotEncoder(categorical_features=[0])
ohe.fit(x)
x = ohe.transform(x).toarray()
from sklearn.model_selection import train_test_split
xtr, xts, ytr, yts = train_test_split(x,y,test_size=0.2)
from sklearn import cluster
kmean = cluster.KMeans(n_clusters=2, init='k-means++', max_iter=100, n_init=10)
kmean.fit(xtr,ytr)
print(kmean.score(xts,yts))
谢谢!!
聚类不是分类。
请注意,fit 的 'y' 参数被 忽略 。 Kmeans 将始终预测 0,1,...,k-1。所以它永远不会在这个数据集上做出正确的标签,因为它甚至不知道标签应该是什么样子。把你在分类上做的事情转移到聚类上确实行不通。你需要从头开始重新学习这个。不同的工作流程,不同的评价。
k 均值分数表示点与质心的距离。
在 scikit learn 中,分数越接近零越好。
不好的分数会 return 一个很大的负数,而好的分数 return 接近于零。通常,您会希望从 scores 方法中获取输出的绝对值以获得更好的可视化效果。
伙计们。我还是一个尝试学习 ML 的初学者,所以请原谅我提出这样一个简单的问题。我有一个来自 UCI ML Repository 的数据集。因此,开始应用各种无监督算法,其中我还应用了 K 均值聚类算法。当我打印出准确度分数时,它是负数,不止一次,而是很多次。据我所知,分数不是负数。那么你能帮我看看为什么它是负面的吗?
感谢任何帮助。
import pandas as pd
import numpy as np
a = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/abalone/abalone.data', names = ["a", "b", "c", "d","e","f","g","h","i"])
b = a
c = b.filter(a.columns[[8]], axis=1)
a.drop(a.columns[[8]], axis=1, inplace=True)
from sklearn.preprocessing import LabelEncoder
le1 = LabelEncoder()
le1.fit(a.a)
a.a = le1.transform(a.a)
from sklearn.preprocessing import OneHotEncoder
x = np.array(a)
y = np.array(c)
ohe = OneHotEncoder(categorical_features=[0])
ohe.fit(x)
x = ohe.transform(x).toarray()
from sklearn.model_selection import train_test_split
xtr, xts, ytr, yts = train_test_split(x,y,test_size=0.2)
from sklearn import cluster
kmean = cluster.KMeans(n_clusters=2, init='k-means++', max_iter=100, n_init=10)
kmean.fit(xtr,ytr)
print(kmean.score(xts,yts))
谢谢!!
聚类不是分类。
请注意,fit 的 'y' 参数被 忽略 。 Kmeans 将始终预测 0,1,...,k-1。所以它永远不会在这个数据集上做出正确的标签,因为它甚至不知道标签应该是什么样子。把你在分类上做的事情转移到聚类上确实行不通。你需要从头开始重新学习这个。不同的工作流程,不同的评价。
k 均值分数表示点与质心的距离。 在 scikit learn 中,分数越接近零越好。
不好的分数会 return 一个很大的负数,而好的分数 return 接近于零。通常,您会希望从 scores 方法中获取输出的绝对值以获得更好的可视化效果。