如何解决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_features
是 None
,将从任何文件中出现的最大列索引推断出来。
X_train, y_train, X_test, y_test = load_svmlight_files((train_file, predict_file))
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_features
是 None
,将从任何文件中出现的最大列索引推断出来。
X_train, y_train, X_test, y_test = load_svmlight_files((train_file, predict_file))