python - 使用 KMeans 聚类在图像上创建聚类
问题描述
我有大约 50000 张属于 9 个不同类别的图像。(衬衫、T 恤、裤子等)
我正在创建一个程序,它将新图像准确地分类到其中一个类中。虽然这是一个标准的分类问题,但准确度并不好,因为有些类别差别不大。例如,一条牛仔裤看起来与正式的裤子很相似,除了颜色和质地。
我希望我可以使用无监督学习来解决这个问题。但是我在将图像传递给 K 均值方法时收到此错误消息
ValueError: setting an array element with a sequence.
这是我的整体代码
data_path = '../DATASET/category/train/'
ls = []
dic = {}
for classes in sorted(os.listdir(data_path)):
if classes.startswith('.'): continue
for image in sorted(os.listdir(os.path.join(data_path,classes))):
if image.startswith('.'): continue
img = np.array(plt.imread(os.path.join(data_path,classes,image)))
ls.append((classes, img))
cls = [i[0] for i in ls]
img = [i[1] for i in ls]
df = pd.DataFrame()
df['img'] = img
df['label'] = cls
X = np.array(df.drop(['label'], 1))
kmeans = KMeans(n_clusters=9)
kmeans.fit(X)
我究竟做错了什么。
提前致谢
解决方案
我认为您必须从每个图像中提取特征,然后将其插入 KMeans。请在此处查看示例:https ://www.kaggle.com/shinto/k-means-clustering
推荐阅读
- css - 无法更改 ng-multiselect 下拉菜单的样式
- c++ - 在没有太多条件的情况下如何避免除以零?
- c# - 如何告诉一个类它应该创建哪些对象?类型与对象混淆:(
- angular - 对 Firestore 的递归调用
- php - 使用 Group By 的 While 循环仅产生一行
- php - 将数字转换为星星
- python - subprocess.call() 中的 Pytest 模拟全局变量
- elasticsearch - Elasticsearch - 停止分析器不允许数字
- swift - 调试时未注册 URL 方案
- android-studio - Android Studio 格式化,同时保持手动对齐的项目