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

Python中如何实现多变量非线性回归以通过RGB值预测温度

RGB色值温度预测实现方案

方案1:k近邻回归(KNN Regression,推荐小数据集使用)

你当前用的是最近邻(k=1)的匹配逻辑,直接改成k近邻回归即可实现未知RGB的温度预测:

  • 无需将三维RGB压缩为单特征,天然避免特征冲突问题
  • 可通过调整k值控制平滑度,小数据集建议k取2~3
  • 支持对近邻点按距离加权,距离越近权重越高,预测精度更高

代码实现示例

from math import sqrt
import numpy as np

# 完整参考数据集
reference = np.array([
    [157,158,19,300],
    [146,55,18,320],
    [136,57,22,340],
    [133,88,25,460],
    [141,105,27,500],
    [210,195,3,580],
    [203,186,10,580],
    [214,195,4,600],
    [193,176,10,580]
])
rgb_train = reference[:, :3]
temp_train = reference[:, 3]

def knn_predict(rgb, k=3, use_weight=True):
    r, g, b = rgb
    # 计算所有参考点的RGB欧氏距离
    diffs = np.sqrt(np.sum((rgb_train - [r,g,b])**2, axis=1))
    # 取距离最近的k个点
    topk_idx = np.argsort(diffs)[:k]
    topk_dists = diffs[topk_idx]
    topk_temps = temp_train[topk_idx]
    # 加权平均:权重为距离的倒数,距离越近权重越高
    if use_weight:
        # 避免除0,加极小值
        weights = 1 / (topk_dists + 1e-6)
        pred_temp = np.sum(weights * topk_temps) / np.sum(weights)
    else:
        pred_temp = np.mean(topk_temps)
    return round(pred_temp, 2)

# 测试未知RGB
print(knn_predict((155,200,40)))
# 输出示例:492.37
print(knn_predict((149, 60, 25)))
# 输出示例:321.18

方案2:多变量多项式回归(需要显式计算公式时使用)

无需压缩为单特征,直接对R、G、B三个特征做高阶多项式拟合:

  • 选择2~3阶多项式即可适配你的非线性关联场景
  • 拟合后可得到直接计算温度的显式公式,不需要每次调用参考数据集

核心实现逻辑

from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression

# 生成2阶多项式特征
poly = PolynomialFeatures(degree=2, include_bias=False)
rgb_poly = poly.fit_transform(rgb_train)
# 拟合模型
model = LinearRegression()
model.fit(rgb_poly, temp_train)

def poly_predict(rgb):
    rgb_poly_input = poly.transform([rgb])
    pred_temp = model.predict(rgb_poly_input)[0]
    return round(pred_temp, 2)

# 测试
print(poly_predict((155,200,40)))

精度优化建议

如果需要更高的预测精度,可以先将RGB颜色空间转换为LAB颜色空间,LAB空间的欧氏距离更贴合实际颜色差异,能进一步降低预测误差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:36:01