如何解决使用 SVM 对多维输出类进行分类时的值错误
我正在尝试使用 SVM 对我的数据进行拟合和分类。 我的输入数据由 11 个特征(维度)和 1335 个样本组成,输出数据由 17 个类(1335x17)组成
from sklearn.svm import SVC
svclassifier = SVC(kernel='linear')
svccl = svclassifier.fit(x_train,y_train)
ValueError: y should be a 1d array,got an array of shape (934,17) instead.
from sklearn.naive_bayes import GaussianNB
gnb = GaussianNB().fit(x_train,y_train)
gnb_predictions = gnb.predict(x_test)
我的方法哪里错了?
解决方法
SVC
和 GaussianNB
不支持多目标变量分类。
因此,它不会接受一维数组以外的任何东西来解决您需要为每个目标拟合一个分类器的问题。
已经有 API Multioutput classification
您可以将其与您想要的任何分类器结合使用。
将多输出与 SVC 结合
from sklearn.datasets import make_classification
from sklearn.multioutput import MultiOutputClassifier
from sklearn.svm import SVC
import numpy as np
X = np.random.rand(934,100)
Y = np.random.randint(17,size = [934,17])
n_samples,n_features = X.shape
svc = SVC()
multi_target_forest = MultiOutputClassifier(svc,n_jobs=-1)
multi_target_forest.fit(X,Y).predict(X)
将多输出与 GaussianNB 结合
from sklearn.datasets import make_classification
from sklearn.multioutput import MultiOutputClassifier
from sklearn.naive_bayes import GaussianNB
import numpy as np
X = np.random.rand(934,n_features = X.shape
gnb = GaussianNB()
multi_target_forest = MultiOutputClassifier(gnb,Y).predict(X)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。