sklearn-5.评价选择model

sklearn.model_selection就是选择模型的额,主要方法是cross_val_score,主要是把原始数据拿出一部分来做验证,看训练的怎么样,就像考试一样,考题和平时的练习题不一样才能知道学的怎么样,假如用训练数据做test,出现的问题就是过拟合,很好理解,就是练习题(training data 得分很高)做的非常熟练,一考试(test data 得分很低)就蒙圈。

from sklearn.model_selection import cross_val_score
scores = cross_val_score( clf, iris.data, iris.target, cv=5, scoring='f1_macro')
这里scoring是验证方法,一般分类都选用accuracy。
f1_macro,‘f1_micro’ 这两个都是针对数据非常不平等,有一个labe很少出现,比如癌症,你用accuracy来评价不科学,因为出现癌症本身的概率太小,就要用这两个指标来衡量假阳性和假阴性。

文档推荐scoring

cv是k折一般,就是分成几份,k-1份训练,1分test。默认用kfold,数据是连续的。
另:吴恩达这样建议,training set,cross_validation set跟test set比例为6:2:2,即留出20%的数据专门用于test。

这可以用train_test_split来实现。
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=0)
random_state是随机种子,这叫 伪随机,因为相同的随机种子会划分同样的数据集。

还有一种替代kfold,sklearn.model_selection.ShuffleSplit,先打乱数据,再分,比如股市受大盘影响比较大,用kfold来分,可以training set是震荡市,test set是下跌市,就不准。
文档这样形容[ShuffleSplit 可以替代 KFold 交叉验证,因为其提供了细致的训练 / 测试划分的 数量和样例所占的比例等的控制。
]
from sklearn.model_selection import ShuffleSplit
ss = ShuffleSplit(n_splits=3,test_size=0.25,random_state=0)
scores = cross_val_score( clf, iris.data, iris.target, cv=ss, scoring='f1_macro')

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 《凝思埠》 夜色越发浓郁,彼岸鳞次节比的高楼在湖光的倒映中尤显洁净而明亮...
    蓬荜生阅读 1,859评论 0 0
  • 互联网相关的创业,技术是重中之重。特别是在初期,没有技术投入项目基本就无法前进半步,如果幸运很快把团队组建起来,你...
    杜仲闲谈阅读 4,322评论 7 5
  • 暑假的午后带着女儿与她的好朋友一起去散步,欢声笑语,相亲相爱,幸福无比。 你能想象的那副美好的画面:俩孩子眼里散发...
    Rebecca心教练阅读 3,138评论 0 0
  • Will 当时的心理状况: 1、压抑,否认:自己童年的悲惨记忆,欺骗女朋友,自己有12个哥哥; 2、没安全感:不敢...
    心芳疗阅读 1,823评论 0 0
  • “今年我刚好十八,是生命中最美好的年华,我有好多奢望,我想去日本旅行一次,去看一场周杰伦的演出会,能义无反顾的去爱...
    旧桥人潮百里阅读 2,361评论 0 1

友情链接更多精彩内容