我创建了一个数据集并将其分为训练集和测试集。
from sklearn.model_selection import train_test_splitX_train, X_test, y_train, y_test = train_test_split(X, Y, test_size = 0.20)
当我尝试使用下面的代码实现一个SVM分类器时:
from sklearn.svm import SVCsvc_classifier = SVC(kernel='rbf')svc_classifier.fit(X_train, y_train)
X_train.shape
和 y_train.shape
都是 (160,2)
。
当我运行最后部分时,我得到了 ValueError:bad input shape (160, 2)
错误。我知道我的训练和测试样本必须是相同的大小。但我想知道是否有方法来处理这个问题。谢谢!
回答:
这是你需要的代码 –
import numpy as npimport matplotlib.pyplot as pltfrom sklearn.model_selection import train_test_splitfrom sklearn.svm import SVCstd = [[0.5, 0], [0, 0.5]]X1 = np.vstack(( np.random.multivariate_normal([2, -2], std, size=200), np.random.multivariate_normal([-2, 2], std, size=200)))y1 = np.zeros(X1.shape[0])X2 = np.vstack(( np.random.multivariate_normal([2, 2], std, size=200), np.random.multivariate_normal([-2, -2], std, size=200)))y2 = np.ones(X2.shape[0])X = np.vstack((X1, X2))y = np.hstack((y1, y2))X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.20)svc_classifier = SVC(kernel='rbf', gamma='auto')svc_classifier.fit(X_train, y_train)
你用来创建数据的原始代码中,Y
只是名称。它并不代表标签。你需要单独创建标签。