如何提高Scikitpython中逻辑回归的模型精度?

xe55xuns  于 2022-12-25  发布在  Python
关注(0)|答案(1)|浏览(438)

我尝试用gre、gpa和rank等预测因子来预测录取变量,但预测精度非常低(0.66),数据集如下所示:https://gist.github.com/abyalias/3de80ab7fb93dcecc565cee21bd9501a
请查找以下代码:

In[73]: data.head(20)
 Out[73]: 

   admit  gre   gpa  rank_2  rank_3  rank_4
0      0  380  3.61     0.0     1.0     0.0
1      1  660  3.67     0.0     1.0     0.0
2      1  800  4.00     0.0     0.0     0.0
3      1  640  3.19     0.0     0.0     1.0
4      0  520  2.93     0.0     0.0     1.0
5      1  760  3.00     1.0     0.0     0.0
6      1  560  2.98     0.0     0.0     0.0

y = data['admit']
x = data[data.columns[1:]]

from sklearn.cross_validation import  train_test_split
xtrain,xtest,ytrain,ytest  = train_test_split(x,y,random_state=2)

ytrain=np.ravel(ytrain)

#modelling 
clf = LogisticRegression(penalty='l2')
clf.fit(xtrain,ytrain)
ypred_train = clf.predict(xtrain)
ypred_test = clf.predict(xtest)

In[38]: #checking the classification accuracy
accuracy_score(ytrain,ypred_train)
Out[38]: 0.70333333333333337
In[39]: accuracy_score(ytest,ypred_test)
Out[39]: 0.66000000000000003

In[78]: #confusion metrix...
from sklearn.metrics import confusion_matrix
confusion_matrix(ytest,ypred)

Out[78]: 
array([[62,  1],
       [33,  4]])

预测错误,如何提高模型精度?

mspsb9vt

mspsb9vt1#

由于机器学习更多的是对特性和模型进行试验,因此没有正确答案。我给你的一些建议是:

1.特征缩放和/或归一化-检查 gregpa 特征的比例。它们相差2个数量级。因此,你的 gre 特征最终会在分类器中占据主导地位,比如逻辑回归。2你可以在将所有特征放入机器学习模型之前,将它们归一化到相同的尺度。This是scikit-learn中可用的各种特征缩放和归一化类的良好指南。
2.类不平衡-查找数据中的类不平衡。由于您使用的是允许/拒绝数据,因此拒绝数将显著高于允许数。SkLearn中的大多数分类器(包括LogisticRegression)都有class_weight参数。将该参数设置为balanced也可能在类不平衡的情况下工作良好。
3.优化其他分数-您还可以优化其他指标,如 Log LossF1-Score。在类不平衡的情况下,F1-Score可能会很有用。This是一个很好的指南,详细介绍了评分。
4.超参数优化-网格搜索-通过执行网格搜索来优化模型的超参数,可以提高准确性。例如,对于LogisticRegression,参数C是一个超参数。此外,你应该避免在网格搜索中使用测试数据。2而是进行交叉验证。3使用你的测试数据仅仅是为了报告你最终模型的最终数据。请注意,GridSearch应该为您尝试的所有模型完成,因为只有您才能知道您可以从每个模型中获得的最佳结果。Scikit-Learn为此提供了GridSearchCV类。This文章也是一个很好的起点。
5.探索更多分类器-逻辑回归学习一个线性决策面,将您的类分开。您的2个类可能不是线性可分的。在这种情况下,您可能需要查看其他分类器,如Support Vector Machines,它们能够学习更复杂的决策边界。您还可以开始查看树-基于Decision Trees的分类器,可以从数据中学习规则。可以将它们视为算法自动从数据中学习的一系列If-Else规则。通常,使用决策树很难获得正确的Bias-Variance Tradeoff,所以如果你有大量的数据,我建议你看看随机森林。
6.错误分析--对于每个模型,返回并查看它们失败的情况。您可能最终会发现一些模型在参数空间的某个部分运行良好,而其他模型在其他部分运行良好。如果是这种情况,那么Ensemble Techniques比如VotingClassifier技术往往会给予出最好的结果,赢得Kaggle比赛的模型很多时候都是合奏模型。
7.更多特性_如果所有这些都失败了,那么这意味着你应该开始寻找更多的特性。

相关问题