我有10个特征的分类问题,必须预测1
或0
。当我训练SVC模型时,通过训练测试拆分,数据测试部分的所有预测值都出来为0
。数据具有以下0-1计数:
0
:1875 1
:1463 用于训练模型的代码如下:
from sklearn.svm import SVC
model = SVC()
model.fit(X_train, y_train)
pred= model.predict(X_test)
from sklearn.metrics import accuracy_score
accuracy_score(y_test, pred)`
为什么在所有情况下都预测0
?
答案 0 :(得分:0)
即使数据集也没有太多不平衡,该模型仍会预测更频繁的班级。目前很可能无法根据功能预测类。
答案 1 :(得分:0)
对于分类问题,最好将虚拟分类作为起点。这将使您了解模型的性能。
您可以将其用作代码:
from sklearn.dummy import DummyClassifier
dummy_classifier = DummyClassifier(strategy="most_frequent")
dummy_classifier.fit(X_train,y_train)
pred_dum= dummy_classifier.predict(X_test)
accuracy_score(y_test, pred_dum)
如果您始终预测最频繁的课程,这将使您具有准确性。例如:100%,这意味着您的数据集中只有一个类。 80%表示您80%的数据属于一类。
第一步,您可以调整SVC:
model = SVC(C=1.0, kernel=’rbf’, random_state=42)
C:浮点数,可选(默认= 1.0)错误的惩罚参数C 学期。
kernel:指定算法中要使用的内核类型。它 必须是“线性”,“多边形”,“ rbf”
之一
这可以为您提供一个起点。
最重要的是,您还应该对训练数据进行预测,以查看拟合或过度拟合的结果。
trainpred= model.predict(X_train)
accuracy_score(y_test, trainpred)