首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过使用多个数据集进行拟合来改进对单个数据集的模型预测

通过使用多个数据集进行拟合来改进对单个数据集的模型预测
EN

Stack Overflow用户
提问于 2020-10-23 05:50:48
回答 1查看 57关注 0票数 1

有一个我正在做的项目,但遇到了一个问题。从本质上讲,这些点分散在x/y图上。我有一个测试点,在那里我得到分类的目标数据(y) (数字从1到6)。我有很多点,我有一些深度索引的数据,以及一些特征。这些点的问题是我每个点(可能100点)得不到太多的数据。

我使用最接近测试点的点来拟合模型,然后尝试将其推广到其他相距较远的点。这并没有给我带来很好的结果。

我知道没有太多的数据可以拟合,所以我试图通过在测试点附近添加一组'k‘点来改进模型。

这些点都共享相同的列,所以我尝试垂直添加,但是我的索引与预测变量y不匹配。

我尝试在最后使用后缀表示特定点id来连接它们,但是当我尝试使用组合特征再次使用模型预测时,我得到了一个关于输入特征量(对于一个点)的错误。

从本质上讲,我想做的是:

代码语言:javascript
运行
复制
model.fit([X_1,X_2,X_3,X_4],y)

model.predict(X_5)

其中:所有要素都是数字(浮点数)

X_1.columns = X_i.columns

每个X矩阵大约有100个点长,连续索引为0:100。

对于每组点,我只有一个测试点(有100个观察值),所以我必须尽可能多地使用接近测试点的数据。

有没有其他模型或技术可以用来做这件事?我对NN模型做了更多的研究(不熟悉,所以我宁愿避免),并发现Keras具有使用其函数API进行多个输入拟合的能力,但在将其拟合为多个输入后,我是否可以仅使用一个输入进行预测?

Keras Sequential model with multiple inputs

EN

回答 1

Stack Overflow用户

发布于 2020-10-23 06:14:35

你能给出更多关于特性/类的信息,以及你正在使用的模型吗?这会让事情变得更容易理解。

但是,根据您目前所说的内容,我可以给出两点建议。

  1. 为了更好地衡量模型的泛化程度,您应该有多个测试点。请参阅https://en.wikipedia.org/wiki/Training,_validation,_and_test_sets

  1. 听起来像是在使用k近邻方法。如果您还没有准备好,那么使用sklearn实现将节省大量时间,并且您可以轻松地尝试不同的超参数:https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsClassifier.html

  1. 其他技术:我喜欢从XGBoost或随机森林开始,因为这些方法只需要很少的调优,并且相当健壮。然而,在小数据集上建模并没有神奇的灵丹妙药。最好的做法是收集更多的数据,或者如果这是不可能的,你需要深入研究并真正理解你的数据(识别异常值,绘制直方图/ KDE等)。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64491017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档