使用 Silhouette Score
Using Silhouette Score
我有一个数据集,每个数据点有 9 个 类。对于属于数据集的每个图像,我将其传递给 ResNet50 并通过稍后切碎最后一个来提取 2048 特征向量。我已经按照与我的 csv 文件相同的顺序,将一个数据点的每一行 ResNet50 特征向量保存在一个 txt 文件中。
我想计算数据集中每个 类 的 Silouhette 分数。我不确定如何继续我的设置。我没有太多代码,但这是一个入门者:
import pandas as pd
from sklearn.metrics import pairwise_distances
from sklearn import cluster, datasets, preprocessing, metrics
from sklearn.cluster import KMeans
df = pd.read_csv("master.csv")
labels = df['Q3 Theme1']
X = open('entire_dataset__resnet50_feature_vectors.txt')
X_Data = X.read()
print('Silhouette Score:', metrics.silhouette_score(X_Data, labels,
metric='cosine'))
我得到这个作为输出:https://pastebin.com/raw/hk2axdWL
如何修复此代码以便打印单个剪影乐谱?
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.
Process finished with exit code 1
我在这里粘贴了一行我的特征向量文件(.txt 文件):https://pastebin.com/raw/hk2axdWL(由 space 分隔的 2048 个数字组成)
我认为问题出在您想阅读 X 的那一行。我稍微更改了您的代码。
from sklearn.metrics import pairwise_distances
from sklearn import cluster, datasets, preprocessing, metrics
from sklearn.cluster import KMeans
df = pd.read_csv("master.csv")
labels = df['Q3 Theme1']
X = open('entire_dataset__resnet50_feature_vectors.txt')
X_Data = X.read()
print('Silhouette Score:', metrics.silhouette_score(X_Data, labels,
metric='euclidean'))
您忘记阅读文件了。
该方法需要一个数组作为输入,而不是文件句柄。
这是正确答案,至少对我有用:
import pandas as pd
from sklearn import metrics
df = pd.read_csv("master.csv")
labels = list(df['Q3 Theme1'])
X = open('entire_dataset__resnet50_feature_vectors.txt')
#X_Data = X.read()
fv = []
for line in X:
line = line.strip("\n")
tmp_arr = line.split(' ')
print(tmp_arr)
fv.append(tmp_arr)
print(fv)
print('Silhouette Score:', metrics.silhouette_score(fv, labels,
metric='cosine'))
我有一个数据集,每个数据点有 9 个 类。对于属于数据集的每个图像,我将其传递给 ResNet50 并通过稍后切碎最后一个来提取 2048 特征向量。我已经按照与我的 csv 文件相同的顺序,将一个数据点的每一行 ResNet50 特征向量保存在一个 txt 文件中。
我想计算数据集中每个 类 的 Silouhette 分数。我不确定如何继续我的设置。我没有太多代码,但这是一个入门者:
import pandas as pd
from sklearn.metrics import pairwise_distances
from sklearn import cluster, datasets, preprocessing, metrics
from sklearn.cluster import KMeans
df = pd.read_csv("master.csv")
labels = df['Q3 Theme1']
X = open('entire_dataset__resnet50_feature_vectors.txt')
X_Data = X.read()
print('Silhouette Score:', metrics.silhouette_score(X_Data, labels,
metric='cosine'))
我得到这个作为输出:https://pastebin.com/raw/hk2axdWL
如何修复此代码以便打印单个剪影乐谱?
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.
Process finished with exit code 1
我在这里粘贴了一行我的特征向量文件(.txt 文件):https://pastebin.com/raw/hk2axdWL(由 space 分隔的 2048 个数字组成)
我认为问题出在您想阅读 X 的那一行。我稍微更改了您的代码。
from sklearn.metrics import pairwise_distances
from sklearn import cluster, datasets, preprocessing, metrics
from sklearn.cluster import KMeans
df = pd.read_csv("master.csv")
labels = df['Q3 Theme1']
X = open('entire_dataset__resnet50_feature_vectors.txt')
X_Data = X.read()
print('Silhouette Score:', metrics.silhouette_score(X_Data, labels,
metric='euclidean'))
您忘记阅读文件了。
该方法需要一个数组作为输入,而不是文件句柄。
这是正确答案,至少对我有用:
import pandas as pd
from sklearn import metrics
df = pd.read_csv("master.csv")
labels = list(df['Q3 Theme1'])
X = open('entire_dataset__resnet50_feature_vectors.txt')
#X_Data = X.read()
fv = []
for line in X:
line = line.strip("\n")
tmp_arr = line.split(' ')
print(tmp_arr)
fv.append(tmp_arr)
print(fv)
print('Silhouette Score:', metrics.silhouette_score(fv, labels,
metric='cosine'))