You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于6维向量的K-Means聚类输入格式问题及代码报错咨询

R-D曲线K-Means聚类:输入格式选择与代码修复

一、输入格式的选择

两种格式对应不同的聚类目标,按需选择:

  • 2维输入(每个样本是(PSNR, 码率)对)
    把每个码率档位对应的PSNR和码率值组成一个2维样本,比如(33.3987, 3929.76)。这种方式适合将R-D曲线上的单个点作为聚类对象,比如区分不同码率下的性能簇,或者找出异常的性能点。如果你的数据集包含多条R-D曲线,总样本数会是「曲线条数×档位数量」。
  • 12维输入(每个样本是整条R-D曲线)
    把6维PSNR向量和6维码率向量拼接成一个12维向量,作为单个样本。这种方式适合将整条R-D曲线的整体特征作为聚类对象,比如区分不同视频/编码方案的R-D曲线形态差异,仅当你有多条独立的R-D曲线时(比如代码里的71条),这种方式才有意义。

二、代码报错修复

你的代码报错是因为生成了3维数组(2,71,6),而K-Means要求输入必须是2维数组(样本数×特征数)。同时注意你变量名写反了(把码率数据加载到了psnr_bitrate,PSNR数据加载到了bitrate),先修正命名,再根据聚类目标调整输入:

场景1:以(PSNR,码率)对为样本(2维特征)

import numpy as np
from sklearn.cluster import KMeans

# 修正变量命名,加载数据
bitrate = np.load(r'F:/RD_data_from_twitch_system/RD_data_from_twitch_system/bitrate_1080.npy')
psnr = np.load(r'F:/RD_data_from_twitch_system/RD_data_from_twitch_system/psnr_1080.npy')

# 将每个档位的PSNR和码率配对,展平为N×2的2维数组
# reshape(-1,1)把71×6的数组转为426×1,再拼接成426×2
kmeans_input = np.hstack([psnr.reshape(-1, 1), bitrate.reshape(-1, 1)])

# 执行K-Means聚类
kmeans = KMeans(n_clusters=3)  # 根据需求调整聚类数
clusters = kmeans.fit_predict(kmeans_input)

场景2:以整条R-D曲线为样本(12维特征)

import numpy as np
from sklearn.cluster import KMeans

# 修正变量命名,加载数据
bitrate = np.load(r'F:/RD_data_from_twitch_system/RD_data_from_twitch_system/bitrate_1080.npy')
psnr = np.load(r'F:/RD_data_from_twitch_system/RD_data_from_twitch_system/psnr_1080.npy')

# 拼接每条曲线的PSNR和码率向量,得到71×12的2维数组
kmeans_input = np.hstack([psnr, bitrate])

# 执行K-Means聚类
kmeans = KMeans(n_clusters=3)  # 根据需求调整聚类数
clusters = kmeans.fit_predict(kmeans_input)

内容的提问来源于stack exchange,提问作者david

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 05:30:59