как решить проблему несоответствия размеров в scipy sparse csr matrix

#python #machine-learning #scipy #naivebayes

#python #машинное обучение #scipy #наивные высказывания

Вопрос:

У меня есть данные для обучения, в которых форма X_train равна: (4000, 206908). Но в моих тестовых данных форма X равна: (2500, 48938). Вот почему я не могу предсказать свои тестовые данные, используя мою обученную модель. Он показывает несоответствие размеров.

 from sklearn import datasets
from joblib import Memory
from sklearn.datasets import load_svmlight_file
mem = Memory("./mycache")

@mem.cache
def get_data():
    data = load_svmlight_file("task_a_labeled_train.tf")
    return data[0], data[1]

X, y = get_data()

from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score

X_train, X_test, y_train, y_test = train_test_split(X, y,test_size = 0.3, random_state=42)
model = MultinomialNB()
model.fit(X_train,y_train)
y_pred = model.predict(X_test)

accuracy_score(y_pred,y_test)

#########################

@mem.cache
def get_data2():
    data = load_svmlight_file("task_a_u00_tune.tf ")
    return data[0], data[1]

X2, y2 = get_data2()

y_pred = model.predict(X2)
# dimension mismatch
  

Комментарии:

1. Похоже, что ваши обучающие и тестовые данные разные. Если мы примем первое измерение за размер пакета, т.Е. Общее количество записей, то следующее измерение содержит характеристики каждой записи. Таким образом, ваши обучающие данные содержат 206908 функций, в то время как ваши тестовые данные содержат 48938 функций. Таким образом, 2 набора данных совершенно разные. Вы не можете предсказать разные наборы данных.

2. @mb0850 можно ли добавить недостающие функции (которые присутствуют в первом наборе данных) во второй набор данных со значением 0, а затем предсказать?

3. можно расширить размеры ваших данных. Но просто убедиться, что форма поезда и тестового набора совпадают, не делает их одинаковыми. Вы не можете сравнивать яблоки с апельсинами, даже если вы покрасили оранжевый в красный цвет.