Python 与训练数据集形状不同的测试数据集SKlearn预测
我是ML的新手,如能提供任何帮助,我将不胜感激。我已经使用测试集a和训练集a运行了一个线性回归预测。我保存了线性回归模型,现在想使用相同的模型使用测试集B的功能预测测试集a目标。每次运行模型时,它都会抛出下面的错误 如何从特征和具有不同形状的目标成功预测测试数据集Python 与训练数据集形状不同的测试数据集SKlearn预测,python,scikit-learn,Python,Scikit Learn,我是ML的新手,如能提供任何帮助,我将不胜感激。我已经使用测试集a和训练集a运行了一个线性回归预测。我保存了线性回归模型,现在想使用相同的模型使用测试集B的功能预测测试集a目标。每次运行模型时,它都会抛出下面的错误 如何从特征和具有不同形状的目标成功预测测试数据集 Input print(testB.shape) print(testA.shape) Output (2480, 5) (1315, 6) Input saved_model = joblib.load(filename) te
Input
print(testB.shape)
print(testA.shape)
Output
(2480, 5)
(1315, 6)
Input
saved_model = joblib.load(filename)
testB_result = saved_model.score(testB_features, testA_target)
print(testB_result)
Output
ValueError: Found input variables with inconsistent numbers of samples: [1315, 2480]
再次感谢它们是不一致的形状,这就是抛出错误的原因。您是否尝试过重塑数据,使其中一个形状相同?快速查看一下,testA中似乎有更多的示例和更少的功能 想想看,如果你已经用5个特征训练了你的模型,那么你就不能要求同一个模型在给定6个特征的情况下做出预测。说到使用线性回归,方程大致如下:
y = b + w0*x0 + w1*x1 + w2*x2 + .. + wN-1*xN-1
Where {
y is your output/label
N is the number of features
b is the bias term
w(i) is the ith weight
x(i) is the ith feature value
}
您已经训练了一个具有5个特征的线性回归器,有效地产生了以下结果
y (your output/label) = b + w0*x0 + w1*x1 + w2*x2 + w3*x3 + w4*x4
然后,您要求它根据6个特性进行预测,但它只知道如何处理5个特性
除了这个问题,您还有太多的样本,testB有2480个,testA有1315个。这些需要匹配,因为模型想要做出2480个预测,但您只给它1315个输出进行比较。你怎样才能得到1165个缺失样本的分数?你现在明白为什么数据必须被重塑了吗
编辑
假设您的数据集具有如上所述的相同数量的特性,您现在可以像下面这样重新调整删除数据testB的形状:
或者,如果您更喜欢使用numpy API的解决方案:
testB = np.delete(testB, np.s_[0:(len(testB)-len(testA))], axis=0)
testB.shape
(1315, 5)
请记住,在执行此操作时,您会切掉一些样本。如果这对您很重要,那么最好引入一个预处理步骤来帮助您解决缺少的值,也就是说,值得注意的是,您正在重塑的数据应该被洗牌,除非它已经被洗牌了,因为您可能正在移除模型应该了解的部分数据。忽略这一点可能会导致模型不能像您希望的那样普遍化。非常感谢nagrom97的提示。将修改数据集,使其具有相同的功能。非常感谢您对如何修改testB以使样本数成为testA的任何建议。例如,一些代码通过在整个testB数据集中等间隔删除1165行来将2480扩展到1315,或者一些您认为合适的类似技术?@l'HommeFort我为您添加了更多细节。
testB = np.delete(testB, np.s_[0:(len(testB)-len(testA))], axis=0)
testB.shape
(1315, 5)