X和y具有不兼容的形状

时间:2014-07-24 00:16:58

标签: python scikit-learn

我试图在1997年训练样本的1维特征向量上拟合分类器,其中包含相同大小的样本包含我的y:

clf = svm.SVC()

j = 0

a = 0

listX = []

listY = []

while a <= 1996:
    ath_X = "".join(linesplit[a])
    listX = listX + [int(ath_X)]
    a+=1

while j <= 1996:
    jth_Y = "".join(linesplit1[j])
    listY = listY + [((int(jth_Y))-1)]
    j+=1

X = np.array(listX)

y = np.array(listY)

print("%s %s %s %s" % ('Dimension of X: ', len(X), 'Dimension of y: ', len(y)))

print("%s %s" % (X.shape[0], y.shape[0]))

print(X[1996])

print(y[1996])

clf.fit(X, y)

ficheiro1.close()

ficheiro.close()

print("We're done")

---&GT;这就是打印出来的内容:

X的维度:1997年的维度:1997年

1997 1997

987654321

0

追踪(最近一次呼叫最后一次):

文件“C:/Python27/qqer.py”,第52行,in     clf.fit(X,y)

文件“C:\ Python27 \ lib \ site-packages \ sklearn \ svm \ base.py”,第166行,in fit     (X.shape [0],y.shape [0]))

ValueError:X和y具有不兼容的形状。

X有1个样本,但y有1997个。

---&GT;如果我为X和y打印出相同的形状,为什么会出现这样的错误?任何想法的人?

1 个答案:

答案 0 :(得分:4)

X形状必须为(n_samples, n_features),如SVC.fit docstring中所述。 1维阵列被解释为单个样本(为了方便在对单个样本进行预测时)。将您的X重塑为(n_samples, 1)