我有一个R-D曲线数据集,如下所示.
(33.3987 34.7318 35.9673 36.8494 37.6992 38.422)
(3929.76 4946.93 6069.78 7243.61 8185.01 9387.84)我们有一个6D向量,其列对应于PSNR和比特率。我试着用K均值聚类对这些向量进行聚类。但我的问题是,如何利用这些向量作为K-均值的输入?是否需要为每一列(如(33.3987,3929.76) )输入2D输入?或者我必须把它们放在一起吗?(33.3987 34.7318 35.9673 36.8494 37.6992 38.422 3929.76 4946.93 6069.78 7243.61 8185.01 9387.84),我对此感到困惑,因为我不确定K-均值作为向量的输入。我用它来组合两个数组作为K-的输入:
psnr_bitrate=np.load(r'F:/RD_data_from_twitch_system/RD_data_from_twitch_system/bitrate_1080.npy')
bitrate=np.load(r'F:/RD_data_from_twitch_system/RD_data_from_twitch_system/psnr_1080.npy')#***
kmeans_input=np.array([psnr_bitrate],[bitrate])它会产生这样的错误:
Traceback (most recent call last):
File "<ipython-input-33-28c2bfac9deb>", line 2, in <module>
scaled_features = pd.DataFrame((kmeans_input))
File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\frame.py", line 497, in __init__
mgr = init_ndarray(data, index, columns, dtype=dtype, copy=copy)
File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\internals\construction.py", line 190, in init_ndarray
values = _prep_ndarray(values, copy=copy)
File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\internals\construction.py", line 324, in _prep_ndarray
raise ValueError(f"Must pass 2-d input. shape={values.shape}")
ValueError: Must pass 2-d input. shape=(2, 71, 6)发布于 2022-10-17 02:21:14
你应该创建一个向量的列表。Shape=的numpy数组(n_vectors,6)。
from sklearn.cluster import KMeans
import numpy as np
X = np.array([[33.3987, 34.7318, 35.9673, 36.8494, 37.6992, 38.422],
[3929.76, 4946.93, 6069.78, 7243.61, 8185.01, 9387.84]]
kmeans = KMeans(n_clusters=3).fit(X)显然,您需要更改n_clusters才能获得好的结果。有关更多信息,请参见https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html。
https://stackoverflow.com/questions/74091903
复制相似问题