Я пытаюсь воспроизвести эксперимент на бумаге с использованием SVM, чтобы увеличить свои знания / знания о машинном обучении. В этой статье автор извлекает элементы и выбирает их размеры. Затем он показывает таблицу, где F представляет размер вектора признаков, а N представляет изображения лиц
Затем он работает с F> = 9 и N> = 15 параметров.
Теперь, что я хочу сделать, так это фактически воспользоваться функциями, которые я извлекаю, как он это делает в статье.
По сути, вот как я извлекаю функции:
def load_image_files(fullpath, dimension=(64, 64)):
descr = "A image classification dataset"
images = []
flat_data = []
target = []
dimension=(64, 64)
for category in CATEGORIES:
path = os.path.join(DATADIR, category)
for person in os.listdir(path):
personfolder = os.path.join(path, person)
for imgname in os.listdir(personfolder):
class_num = CATEGORIES.index(category)
fullpath = os.path.join(personfolder, imgname)
img_resized = resize(skimage.io.imread(fullpath), dimension, anti_aliasing=True, mode='reflect')
flat_data.append(img_resized.flatten())
images.append(skimage.io.imread(fullpath))
target.append(class_num)
flat_data = np.array(flat_data)
target = np.array(target)
images = np.array(images)
print(CATEGORIES)
return Bunch(data=flat_data,
target=target,
target_names=category,
images=images,
DESCR=descr)
Как мне выбрать количество извлекаемых и сохраняемых функций? или как мне вручную сохранить вектор с нужным мне количеством функций? Например, вектор функций размером 9
Я пытаюсь разделить свои функции следующим образом:
X_train, X_test, y_train, y_test = train_test_split(
image_dataset.data, image_dataset.target, test_size=0.3,random_state=109)
model = ExtraTreesClassifier(n_estimators=10)
model.fit(X_train, y_train)
print(model.feature_importances_)
Хотя мой результат:
[0. 0. 0. ... 0. 0. 0.]
для классификации SVM, я пытаюсь использовать OneVsRestClassifier
model_to_set = OneVsRestClassifier(SVC(kernel="poly"))
parameters = {
"estimator__C": [1,2,4,8],
"estimator__kernel": ["poly", "rbf"],
"estimator__degree":[1, 2, 3, 4],
}
model_tunning = GridSearchCV(model_to_set, param_grid=parameters)
model_tunning
model_tunning.fit(X_train, y_train)
prediction = model_tunning.best_estimator_.predict(X_test)
Затем, как только я вызываю прогноз, я получаю:
Out[29]:
array([1, 0, 4, 2, 1, 3, 3, 0, 1, 1, 3, 4, 1, 1, 0, 3, 2, 2, 2, 0, 4, 2,
2, 4])