我的贷款数据集的形状非常不平衡: (116058,29)
如何提高准确性和召回分数 目标列m13 计数器({1:636,0:115422})
我曾经在训练和测试集中分割数据:
X_train,X_test,y_train,y_test = train_test_split(X,y,train_size = 0.8,random_state = 100,stratify = y)
,然后使用svm进行分类:
svc = SVC(class_weight = {1:0.95,0:0.05},kernel='rbf')
svc.fit(X_train,y_train)
y_pred = svc.predict(X_test)
我的精度为.54,召回率为.55
我也尝试了使用C和gamma值不同的网格搜索,上面的代码给出了最好的结果
svc = SVC(class_weight = {1:0.95,0:0.05},kernel='rbf')
svc.fit(X_train,y_train)
y_pred = svc.predict(X_test)
有什么方法可以提高查准率和查全率吗?
答案 0 :(得分:0)
首先,让我评论一下您的预测基准。如果我理解您的说法是正确的,那么您有636个1类和115422个0类。
在Imagen中,您将建立一个始终预测类0的预测模型,您的精度将是(如果类0是您的真实类):
115422/(115422+636)=0,9945
和您的回忆(如果0类是您的真实类): 1个 如果第1类是您的真实类,则精度为:0
如您所见,调整它是一项艰巨的任务。一般来说,有关于此主题的书籍,对其进行调整将非常困难。但是您的目标应该是正确预测1级!目标应该是识别算法中的每个类别1。例如,您可以尝试确定您的敏感度,以下是一些目标:https://en.wikipedia.org/wiki/Precision_and_recall
您该做什么,请确保您的训练和测试设备的目标等级为1级。