from sklearn import svm import numpy as np x = [[2, 0], [1, 1], [2, 3]] y = [0, 0, 1] #标签 clf = svm.SVC(kernel= 'linear') clf.fit(x, y) print(clf) print('支持向量', clf.support_vectors_) #支持向量 print('下标', clf.support_) #支持向量下标 print('svm个数',clf.n_support_) #每一类中有几个支持向量 z = [0, 1] z = np.array(z).reshape((1, -1)) print(clf.predict([0, 1])) #测试数据
Traceback (most recent call last):
File "/Users/fengweijiao/Desktop/develop/python/ml/svm/svmTest.py", line 24, in <module>
print(clf.predict([0, 1])) #测试数据
File "/usr/local/lib/python3.6/site-packages/sklearn/svm/base.py", line 548, in predict
y = super(BaseSVC, self).predict(X)
File "/usr/local/lib/python3.6/site-packages/sklearn/svm/base.py", line 308, in predict
X = self._validate_for_predict(X)
File "/usr/local/lib/python3.6/site-packages/sklearn/svm/base.py", line 439, in _validate_for_predict
X = check_array(X, accept_sparse='csr', dtype=np.float64, order="C")
File "/usr/local/lib/python3.6/site-packages/sklearn/utils/validation.py", line 441, in check_array
"if it contains a single sample.".format(array))
ValueError: Expected 2D array, got 1D array instead:
array=[ 0. 1.].
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.
SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
decision_function_shape='ovr', degree=3, gamma='auto', kernel='linear',
max_iter=-1, probability=False, random_state=None, shrinking=True,
tol=0.001, verbose=False)
参考stackflow上的方法,https://stackoverflow.com/questions/35166146/sci-kit-learn-reshape-your-data-either-using-x-reshape-1-1