如何解决svmlight格式加载的训练集和测试集维度不匹配?

How to solve the dimension mismatch between the training and test set loaded from svmlight format?

X_train, y_train = load_svmlight_file(train_file)
X_test,y_test=load_svmlight_file(predict_file)
clf = linear_model.LinearRegression()
clf.fit(X_train,y_train)
y=clf.predict(X_test)

这是我的线性回归代码。我的数据是从 svmlight 格式加载的,就像 label <id1>:<value1> <id2>:<value2> <id2>:<value2>。但问题是这是一个稀疏矩阵。在我使用 X_train.todense()X_test.todense() 之后。 X_train 的形状是 92*100 但 X_test 是 51*20。事实上,两者都应该有 92 维。如何解决这个问题?

您可以指定特征数量

X_test,y_test=load_svmlight_file(predict_file, n_features=92)

或使用 load_svmlight_files 从多个文件加载数据集。在这种情况下,如果 n_featuresNone,将从任何文件中出现的最大列索引推断出来。

X_train, y_train, X_test, y_test = load_svmlight_files((train_file, predict_file))