机器学习特征工程和网格搜索

特征工程可用的一些方法

  • 数据之间存在共线性,指数据之间的相关系数过高,会使模型失真。在建立模型时要尽量避免共线性

  • 利用相关系数(共线性)可以将部分影响模型准确性的特征剔除,相关系数越大,共线性越强。

  • 同样利用方差也可以筛选出影响模型准确性的特征,方差越小,说明特征中的数据的差别越小,不利于分类,故应将方差小的数据剔除。但要根据实际的情况,比如说一个特征中只有两类数值0和1,方差很小,但是特征是天气是否下雨,是一种很明显的分类,这种情况就不能直接删除了。

  • 对于连续型数据,可以查看它的分布,我们更希望数据能够呈现为正太分布的状况,但是若出现偏尾,可以利用对数变化让数据更加贴近正太分布。

  • pd.melt() ,可以将多列数据汇总为一列,参数分别为 原始数据,第一列数据名,第二列数据名,第三列数据名,第二列数据会将所有列名汇总,第三列会将所有列的值进行汇总。进行汇总处理后翻方便可视化数据分布情况

pd.melt(data,id_vars="",var_name="",value_name='')
#sns.swarmplot配合使用可以清晰看数据分布,如下例子
sns.swarmplot(x="features", y="value", hue="diagnosis", data=data)

如下图示例:可以清晰的看到0-1的分布,一些特征的0-1分布更加明显,更有利于我们利用特征进行分类。
在这里插入图片描述

网格搜索和交叉验证

  • 网格搜索: 用简答的话来说就是你手动的给出一个模型中你想要改动的所用的参数,程序自动的帮你使用穷举法来将所用的参数都运行一遍,得到最好的参数
  • 交叉验证: 通俗的讲就是为了避免一份数据中有好有坏的数据,将我们传入的数据分割,每一次都从测试集中取出一分部去进行测试,最终在多次分割的测试中取得一个比较好的结果。
from sklearn.model_selection import GridSearchCV #导入网格搜索模块

GS = GridSearchCV(estimator,param_grid,scoring,cv,verbose, refit) 
#estimator: 传入学习器
#param_grid: 需要最优化的参数的取值,值为字典或者列表,传入列表,让模型自己获取最优选择
#scoring: 模型评价标准,用均方误差或是AUC来衡量模型得分
#cv:交叉验证参数,进行机几指叉验证,传入一个数值
#verbose: 日志冗长度,0:不输出训练过程,1:偶尔输出,>1:对每个子模型都输出
# refit: 默认为True,程序将会以交叉验证训练集得到的最佳参数,重新对所有可用的训练集与开发集进行,作为最终用于性能评估的最佳模型参数。即在搜索参数结束后,用最佳参数结果再次fit一遍全部数据集。

GS.fit(x,y)  #训练模型
print(grid.best_params_) #返回最优参数组合
print(grid.best_score_) #返回最优的模型评分
print(grid.cv_results_) #返回所有数据的得分和排名
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Weidong He.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值