Machine learning 为什么SVC模型返回的预测值数组都等于1?

Machine learning 为什么SVC模型返回的预测值数组都等于1?,machine-learning,scikit-learn,svm,Machine Learning,Scikit Learn,Svm,我有一个数据库,代表不同类型的餐馆表亲。对于这个数据库,我已经做了一个单热编码,它产生了一系列具有二进制值的列,如下所示(并非所有列都显示) 我必须建立一个预测模型,以便预测y“%equal_class”值(从1到10)给定的所有类型。 我尝试用下面的代码使用SVC模型 from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test=train_test_split(X,y,test_s

我有一个数据库,代表不同类型的餐馆表亲。对于这个数据库,我已经做了一个单热编码,它产生了一系列具有二进制值的列,如下所示(并非所有列都显示)

我必须建立一个预测模型,以便预测y“%equal_class”值(从1到10)给定的所有类型。 我尝试用下面的代码使用SVC模型

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test=train_test_split(X,y,test_size=0.2,random_state=4)
from sklearn import svm
clf=svm.SVC(kernel='sigmoid',gamma='auto')
clf.fit(X_train,y_train)
yhat=clf.predict(X_test)
expected yhat value返回一个数组,其中所有值都等于1。我尝试了不同的内核,但结果是一样的。 你能告诉我我错了吗?

可能是因为(与其他标签相比,标签为1的样品很多)。您应该执行网格搜索,并针对F1分数优化超参数(在您的案例中为gamma),而不是将其设置为“自动”

array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])