Как вписать добавленный массив в train_test_split? - PullRequest
0 голосов
/ 26 апреля 2020

Я пытаюсь использовать линейный SV C, и для этого я хочу тренировать свои модели с помощью train_test_split, но я получаю ошибку, описанную в названии. У меня есть 4d вектор, который читает изображения из моих данных. Итак, я занимаюсь созданием функции с именем create_training_data, которая добавляет метки к изображениям.

images = {}
def create_training_data():
    for category in CATEGORIES:
        path = os.path.join(DATADIR, category)
        for person in os.listdir(path):
            personfolder = os.path.join(path, person)
            class_num = CATEGORIES.index(category)
            for imgname in os.listdir(personfolder):
                try:
                    fullpath = os.path.join(personfolder, imgname)
                    images[fullpath] = cv2.imread(os.path.join(path,fullpath), cv2.IMREAD_GRAYSCALE)  
                    average_filter = cv2.blur(normalized_img_array, (3,3))
                    plt.imshow(average_filter, cmap="gray")
                    training_data.append([new_array, class_num])
                except Exception as e:
                    print(e)

create_training_data()

После этого я определяю свой классификатор

import sklearn

model_to_set = OneVsRestClassifier(SVC(kernel="poly"))

parameters = {
    "estimator__C":[1, 2, 3, 4, 8],
    "estimator__kernel": ["poly","rbf"],
    "estimator_degree":[1,2,3,4]
}
model_tunning = GridSearchCV(model_to_set, param_grid=parameters)
model_tunning

После этого il oop моих функций и меток в массиве X и Y и импортирую train_test_split

from sklearn.model_selection import train_test_split
    X = []
    y = []
for features, label in training_data:
    X = np.array(features)
    y = np.array(label)
    X = np.array(X).reshape(-1, IMG_SIZE, IMG_SIZE, 1)



X_train, X_test, y_train, y_test = train_test_split(X, y, random_state = 0)
model_tunning.fit(X_train, y_train)

Это дает мне следующие ошибки:

TypeError: Singleton array array(2) cannot be considered a valid collection.

TypeError                                 Traceback (most recent call last)
<ipython-input-28-b95d8285ab51> in <module>
----> 1 X_train, X_test, y_train, y_test = train_test_split(X, y, random_state = 0)
      2 model_tunning.fit(X_train, y_train)

Итак, вкратце у меня есть следующий вывод из 'training_data.append ([new_array, class_num] 'function

enter image description here

Я хочу передать свои тренировочные данные в качестве параметра train_test_split следующим образом: train_test_split ( training_data_X, training_data_Y, random_state = 0), поскольку я не могу сделать train_test_split (Training_data, random_state = 0)

...