【发布时间】:2019-10-13 18:07:27
【问题描述】:
我正在尝试应用 python 的 scikit-learn 包中提供的机器学习算法来从一组涂鸦图像中预测涂鸦名称。
由于我是机器学习的初学者,而且我对神经网络的工作原理一无所知。我想试试 scikit-learn 的算法。
我在名为 quickdraw 的 API 的帮助下下载了(猫和吉他的)涂鸦。
然后我使用以下代码加载图像
import numpy as np
from PIL import Image
import random
#To hold image arrays
images = []
#0-cat, 1-guitar
target = []
#5000 images of cats and guitar each
for i in range(5000):
#cat images are named like cat0.png, cat1.png ...
img = Image.open('data/cats/cat'+str(i)+'.png')
img = np.array(img)
img = img.flatten()
images.append(img)
target.append(0)
#guitar images are named like guitar0.png, guitar1.png ...
img = Image.open('data/guitars/guitar'+str(i)+'.png')
img = np.array(img)
img = img.flatten()
images.append(img)
target.append(1)
random.shuffle(images)
random.shuffle(target)
然后我应用了算法:-
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test = train_test_split(images,target,test_size=0.2, random_state=0)
from sklearn.naive_bayes import GaussianNB
GB = GaussianNB()
GB.fit(X_train,y_train)
print(GB.score(X_test,y_test))
运行上述代码后(也使用其他算法,如 SVM、MLP),我的系统只是冻结。我已经强制关闭以返回。我不确定为什么会这样。
我尝试通过更改来减少要加载的图像数量
for i in range(5000):
到
for i in range(1000):
但我的准确率只有 50% 左右
【问题讨论】:
标签: python machine-learning scikit-learn