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