im试图使用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])
im试图使用SVM在纸上复制实验,以增加我对机器学习的了解/知识。在本文中,作者提取特征并选择特征尺寸。他,...
因此,您有两个图像信息数组(一个未处理,另一个已调整大小并展平),以及一列相应的类值(我们通常将其称为标签)。当前有两件事情与设置不完全相同,但是: