weixin_48115164 2021-12-03 15:49 采纳率: 66.7%
浏览 12
已结题

有人能看下,我用上hog特征提取了吗,为什么感觉没变化呀


import skimage
from pathlib import Path
import matplotlib.pyplot as plt
import numpy as np
from sklearn import svm, metrics, datasets
from sklearn.utils import Bunch
from sklearn.svm import SVR
from skimage.io import imread  # abc
from skimage.transform import resize
from sklearn.model_selection import train_test_split
from skimage.feature import hog
from sklearn.model_selection import RandomizedSearchCV

def load_image_files(container_path, dimension=(64, 64)):
    image_dir = Path(container_path)
    folders = [directory for directory in image_dir.iterdir() if directory.is_dir()]
    categories = [fo.name for fo in folders]

    descr = "A image classification dataset"
    images = []
    flat_data = []
    target = []
    features=[]
    for i, direc in enumerate(folders):  # enumerate()函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
        for file in direc.iterdir():
            img = skimage.io.imread(file)  #以numpy格式读取图片,(height,width,channel)
            img_resized = resize(img, dimension, anti_aliasing=True, mode='reflect')  #改变图像尺寸
            fd = hog(img_resized, orientations=12, block_norm='L1', pixels_per_cell=[8, 8], cells_per_block=[4, 4],
                     visualize=False,
                     transform_sqrt=True)
            features.append(fd)
            flat_data.append(img_resized.flatten())
            images.append(img_resized)
            target.append(i)
    flat_data = np.array(flat_data)
    target = np.array(target)
    images = np.array(images)
    features=np.array(features)

    return Bunch(data=flat_data,
                 target=target,
                 target_names=categories,
                 images=images,
                 features=features,
                 DESCR=descr)


image_dataset = load_image_files("E:\images")

X_train, X_test, y_train, y_test = train_test_split(
    image_dataset.data, image_dataset.target, test_size=0.3, random_state=109)

param_grid = [
    {'C': list(range(0, 100)), 'gamma': (0.0001, 0.001), 'kernel': ['rbf']}
]
n_iter_search = 50
svc = svm.SVC()
clf = RandomizedSearchCV(svc, param_grid, n_iter=n_iter_search, cv=3)
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
print("Classification report for - \n{}:\n{}\n".format(
    clf, metrics.classification_report(y_test, y_pred)))

print(clf.best_score_)
print(clf.best_params_)
print('模型在训练集得分:{:.3f}'.format(clf.score(X_train,y_train)))
print('模型在测试集得分:{:.3f}'.format(clf.score(X_test,y_test)))
  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 12月11日
    • 创建了问题 12月3日

    悬赏问题

    • ¥30 这是哪个作者做的宝宝起名网站
    • ¥60 版本过低apk如何修改可以兼容新的安卓系统
    • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
    • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
    • ¥50 有数据,怎么用matlab求全要素生产率
    • ¥15 TI的insta-spin例程
    • ¥15 完成下列问题完成下列问题
    • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
    • ¥15 YoloV5 第三方库的版本对照问题
    • ¥15 请完成下列相关问题!