Bu alanda nispeten yeni biriyim, bu yüzden yardımın için minnettarım. Ben mnist veri kümesinde oynuyorum. Kodu http://g.sweyla.com/blog/2012/mnist-numpy/'dan aldım ama 2 boyutlu olacak şekilde "görüntüler" değiştirdim, böylece her görüntü bir özellik vektörü olacak. Daha sonra veriler üzerinde PCA ve ardından SVM'yi çalıştırdım ve skoru kontrol ettim. Her şey iyi çalışıyor gibi görünüyor, ancak aşağıdaki uyarıyı alıyorum ve neden emin değilim.Neden veri dönüştürme uyarısı alıyorum?
"DataConversionWarning: A column-vector y was passed when a 1d array was expected.\
Please change the shape of y to (n_samples,), for example using ravel()."
Bazı şeyleri denedim ama bu uyarıdan kurtulacak gibi görünmüyor. Baska öneri? İşte tam kodu (burada kod kopyalama berbat biraz var gibi eksik çentikler görmezden görünüyor): Yardım için
import os, struct
from array import array as pyarray
from numpy import append, array, int8, uint8, zeros, arange
from sklearn import svm, decomposition
#from pylab import *
#from matplotlib import pyplot as plt
def load_mnist(dataset="training", digits=arange(10), path="."):
"""
Loads MNIST files into 3D numpy arrays
Adapted from: http://abel.ee.ucla.edu/cvxopt/_downloads/mnist.py
"""
if dataset == "training":
fname_img = os.path.join(path, 'train-images.idx3-ubyte')
fname_lbl = os.path.join(path, 'train-labels.idx1-ubyte')
elif dataset == "testing":
fname_img = os.path.join(path, 't10k-images.idx3-ubyte')
fname_lbl = os.path.join(path, 't10k-labels.idx1-ubyte')
else:
raise ValueError("dataset must be 'testing' or 'training'")
flbl = open(fname_lbl, 'rb')
magic_nr, size = struct.unpack(">II", flbl.read(8))
lbl = pyarray("b", flbl.read())
flbl.close()
fimg = open(fname_img, 'rb')
magic_nr, size, rows, cols = struct.unpack(">IIII", fimg.read(16))
img = pyarray("B", fimg.read())
fimg.close()
ind = [ k for k in range(size) if lbl[k] in digits ]
N = len(ind)
images = zeros((N, rows*cols), dtype=uint8)
labels = zeros((N, 1), dtype=int8)
for i in range(len(ind)):
images[i] = array(img[ ind[i]*rows*cols : (ind[i]+1)*rows*cols ])
labels[i] = lbl[ind[i]]
return images, labels
if __name__ == "__main__":
images, labels = load_mnist('training', arange(10),"path...")
pca = decomposition.PCA()
pca.fit(images)
pca.n_components = 200
images_reduced = pca.fit_transform(images)
lin_classifier = svm.LinearSVC()
lin_classifier.fit(images_reduced, labels)
images2, labels2 = load_mnist('testing', arange(10),"path...")
images2_reduced = pca.transform(images2)
score = lin_classifier.score(images2_reduced,labels2)
print score
Teşekkür!
Teşekkürler! Bazı nedenlerden dolayı sorunun "görüntüler" dizisiyle olduğundan emin oldum. Bunu düşünmemiştim bile. Aptal ben. Her neyse, daha fazla uyarı yok. Tekrar teşekkürler :) – shmibloo