Python - 预测小于训练数据的测试数据
Posted
技术标签:
【中文标题】Python - 预测小于训练数据的测试数据【英文标题】:Python - Predicting test data that is smaller than train data 【发布时间】:2021-02-28 21:11:46 【问题描述】:我已经预处理了一些数据,准备好训练多项朴素贝叶斯分类。训练数据占我数据的 80%,测试数据占 20%。
训练数据是一个大小为 8452 的数组,测试数据是一个大小为 4231 的数组
如果我想查看火车数据的预测,我可以执行以下代码
multiNB = MultinomialNB()
model = multiNB.fit(x_train, y_train)
y_preds = model.predict(x_train)
但如果我想预测我的测试 即
y_preds = model.predict(x_test)
我收到以下错误:
ValueError: matmul: Input operand 1 has a mismatch in its core dimension 0,
with gufunc signature (n?,k),(k,m?)->(n?,m?) (size 8452 is different from 4231)
如果我需要提供有关我的代码的更多信息,请询问,但我被困在这里,我并不真正了解导致该错误的原因,欢迎任何帮助。
这就是我获得训练测试集的方式:
total_count = len(tokenised_reviews)
split = int(total_count * 0.8)
shuffle = np.random.permutation(total_count)
x = []
y = []
for i in range(total_count):
x.append(x_data[shuffle[i]])
y.append(y_data[shuffle[i]])
x_train = x[:split]
x_test = x[split:]
y_train = y[:split]
y_test = y[split:]
【问题讨论】:
我无法重现您的错误。您是否正确拆分了火车测试?你能分享一下你是如何获得训练和测试集的吗 我已经在上面添加了我是如何获得训练集和测试集的 如果x_data
是一个数组,跳过循环并执行x = x_data[shuffle]
。 y
也一样。可能有帮助。你需要转置数组还是什么?
我需要追加数据,以便可以通过 x 和 y 进行索引
您可以按照建议使用索引调用数据。或者您可以使用 scikit learn 中的 train_test_split ... 我询问拆分的原因是因为我无法使用示例数据集重现您的错误
【参考方案1】:
作为评论输入太长了,当我再次尝试你的时候,我得到了一个非常奇怪的结构。我不知道x_data
是什么,所以很难解释确切的错误是什么。
我怀疑再次将数据放回列表时出了点问题,所以如果你这样做:
total_count = len(x_train)
split = int(total_count * 0.8)
shuffle = np.random.permutation(total_count)
x_train = x_data[shuffle[split:]]
x_test = x_data[shuffle[:split]]
y_train = y_data[shuffle[split:]]
y_test = y_data[shuffle[:split]]
您应该将 x_train 和 x_test 作为原始数据的子集。
或者你可以简单地这样做:
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x_data, y_data, test_size=0.2)
【讨论】:
我想要拟合的数据最终是一个 np.arrayprint(type(x_train_arr), (x_train_arr.shape)) <class 'numpy.ndarray'> (1105, 8550) print(type(x_test_arr), (x_test_arr.shape)) <class 'numpy.ndarray'> (277, 4002)
我已经尝试过你的建议,但结果每次都是同样的错误
你看到你的形状不一样了。如果你做了我上面所说的,我认为这是不可能的。 x_data
是什么,它与 tokenised_reviews
有何不同
您必须将火车和测试一起制成表格,然后将它们拆分以上是关于Python - 预测小于训练数据的测试数据的主要内容,如果未能解决你的问题,请参考以下文章
使用 predict() 时,预测变量数相同但行数不同的新数据出错