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

请求提供基于机器学习预测新数据点y值的Python代码

解决小样本回归预测问题的Python实现

Hey there! 作为机器学习新手遇到插值失效的情况太正常了——毕竟插值对数据分布的假设比较强,遇到样本少或者非线性分布的场景就容易掉链子。我给你准备了两种上手简单、效果靠谱的回归方案,完全适配你的数据结构,直接就能跑起来~

方案1:K近邻回归(KNN Regression)

KNN是最适合新手入门的模型之一,原理超直观:找新数据点附近最像的K个样本,用它们的y值加权平均来预测。特别适合你这种小样本场景,不用复杂的参数拟合。

完整代码

# 导入必要的库
import numpy as np
from sklearn.neighbors import KNeighborsRegressor

# 你的样本数据
x = [(1, 2), (1, 5), (1, 6), (2, 4), (2, 5), (2, 7), (3, 1), (3, 5), (3, 6)]
y = [2.3,5.6,9.0,8.6,4.2,13.5,11.0,1.3,5.0]

# 把数据转换成sklearn能处理的数组格式
X_train = np.array(x)
y_train = np.array(y)

# 初始化KNN回归模型,这里选k=3(可以根据效果调整,比如2、4都试试)
knn_model = KNeighborsRegressor(n_neighbors=3)

# 训练模型(KNN其实没有"训练"过程,只是把数据存起来)
knn_model.fit(X_train, y_train)

# 要预测的新数据点
new_points = np.array([(2, 3), (3, 4)])

# 执行预测
predictions_knn = knn_model.predict(new_points)

# 输出结果
print("KNN回归预测结果:")
for point, pred in zip(new_points, predictions_knn):
    print(f"数据点{point}对应的y预测值:{round(pred, 2)}")

小提示

  • 可以调整n_neighbors的值试试:k太小容易过拟合(受异常值影响大),k太大容易欠拟合(预测结果太模糊)
  • 如果你的数据特征量纲不一样,记得先做标准化(from sklearn.preprocessing import StandardScaler)

方案2:梯度提升回归树(Gradient Boosting Regressor)

如果后续你的工作数据量变大,或者需要更稳定的预测效果,梯度提升树是更好的选择——它通过多个弱回归树的集成,能捕捉数据的非线性关系,效果比KNN更鲁棒。

完整代码

# 导入必要的库
import numpy as np
from sklearn.ensemble import GradientBoostingRegressor

# 你的样本数据
x = [(1, 2), (1, 5), (1, 6), (2, 4), (2, 5), (2, 7), (3, 1), (3, 5), (3, 6)]
y = [2.3,5.6,9.0,8.6,4.2,13.5,11.0,1.3,5.0]

# 转换数据格式
X_train = np.array(x)
y_train = np.array(y)

# 初始化梯度提升回归模型,参数可以按需调整
gbr_model = GradientBoostingRegressor(
    n_estimators=100,  # 弱树的数量,默认100,不用改也能跑
    learning_rate=0.1, # 学习率,越小模型越稳定但训练越慢
    max_depth=3        # 树的最大深度,防止过拟合
)

# 训练模型
gbr_model.fit(X_train, y_train)

# 要预测的新数据点
new_points = np.array([(2, 3), (3, 4)])

# 执行预测
predictions_gbr = gbr_model.predict(new_points)

# 输出结果
print("\n梯度提升回归预测结果:")
for point, pred in zip(new_points, predictions_gbr):
    print(f"数据点{point}对应的y预测值:{round(pred, 2)}")

小提示

  • 新手可以先默认参数跑起来,后续再调n_estimators和max_depth优化效果
  • 可以用交叉验证评估模型性能:from sklearn.model_selection import cross_val_score,比如scores = cross_val_score(gbr_model, X_train, y_train, cv=3),看看模型的泛化能力

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:10:17