Уменьшить количество атрибутов разреженной матрицы - PullRequest
0 голосов
/ 26 июня 2019

У меня есть 2 (обучающие и тестовые) очень большие разреженные матрицы, которые я хочу использовать для прогнозирования.

Для экспериментов, которые я хочу провести, я хочу взять только часть моих данных. Я сделал скрипт, который создал файл с первыми k строками моего файла LibSVM поезда.

Проблемы с тестированием: 1) Учитывая, что это контролируемое обучение, мне нужно иметь одинаковые классы 2) Если я не беру все строки из обучения, иногда количество атрибутов может быть меньше для обучения, чем тестирования.

Есть ли какие-либо предложения о том, как адаптировать мой набор данных для тестирования к совместимости с моим учебным?

Это код функции, которая создает мой файл поезда.

def k_train_data(k):
    with open("../Data/LSHTC/LSHTC1/train_corrected.txt", 'r') as file1:
        with open("../Data/LSHTC/LSHTC1/train_"+str(k)+".txt", 'a+') as file2:
            s = ""
            for i in range(k):
                line = file1.readline()
                s += line
                if i % 100 == 0:
                    file2.write(s)
                    s = ""
            file2.write(s)

А вот код для чтения файлов:

X_train, y_train = load_svmlight_file("../Data/LSHTC/LSHTC1/train_500.txt")
X_test, y_test = load_svmlight_file("../Data/LSHTC/LSHTC1/test_corrected.txt", n_features=shape(X_train)[1])

для этого размера я получаю следующую форму:

поезд: (500, 1199727)

тест: (34800, 1199855)

(я знаю, что образец поезда слишком мал, но это всего лишь эксперимент)

...