|
发表于 2024-7-19 09:54:50
|
显示全部楼层
听起来你已经非常认真地在训练和使用模型了,棒棒哒!但是预测结果只有一个,说明可能是你传入的 `X_new` 数据有问题。我们来检查一下代码和数据格式。
首先,我们需要确认你的 `X_new` 格式正确,它应该是一个二维数组,每一行代表一张图片的特征。
这里是一个简单的示例代码展示如何读取图片、提取特征并进行预测:
- import numpy as np
- from skimage.io import imread
- from skimage.transform import resize
- from skimage.feature import hog
- import joblib
- # 假设我们有一张图片 'cat.0.jpg'
- image_path = 'cat.0.jpg'
- # 读取图片并调整尺寸(假设统一调整为64x64)
- image = imread(image_path, as_gray=True)
- image_resized = resize(image, (64, 64))
- # 提取 HoG (Histogram of Oriented Gradients) 特征
- feature_vector, _ = hog(image_resized, pixels_per_cell=(8, 8), cells_per_block=(2, 2), visualize=True)
- # 将特征向量放入二维数组,以便进行预测
- X_new = np.array([feature_vector])
- # 加载模型并进行预测
- loaded_model = joblib.load('svm_model.pkl')
- predictions = loaded_model.predict(X_new)
- # 输出预测结果
- print("Predictions:", predictions)
复制代码
如果你有多张图片,可以这样做:
- import glob
- # 假设所有图片都在imgs文件夹下且命名为 'cat.0.jpg', 'cat.1.jpg', ...
- image_paths = glob.glob('imgs/*.jpg')
- X_new = []
- for image_path in image_paths:
- image = imread(image_path, as_gray=True)
- image_resized = resize(image, (64, 64))
- feature_vector, _ = hog(image_resized, pixels_per_cell=(8, 8), cells_per_block=(2, 2), visualize=True)
- X_new.append(feature_vector)
- # 转换为numpy数组
- X_new = np.array(X_new)
- # 加载模型并进行预测
- loaded_model = joblib.load('svm_model.pkl')
- predictions = loaded_model.predict(X_new)
- # 输出预测结果
- print("Predictions:", predictions)
复制代码
确保:
1. 你的 `X_new` 是一个二维数组,每一行对应一张图片的特征。
2. 提取特征的方法如 HoG 是一致的,无论训练还是预测。
希望这能帮助到你,让你的模型预测时不再是孤单的一个结果,而是一群结果!加油!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|