【机器学习】Sklearn 调试模型
来源:互联网 发布:精业本草官方淘宝店 编辑:程序博客网 时间:2024/06/05 17:04
1、过拟合
处理过拟合的方法有:
a>减少特征,降低模型的复杂度
b>减小调试参数
c>增加训练数据量
常用的调参方法就是通过在惩罚函数中新增一个正则化参数C来控制分类边界对样本的辨识度,如果是用权重的二次方,则是L2正则化,如果是|W|/C则是L1正则化。
L2损失函数:
X是训练集,W权重矩阵,b是偏置向量,y真实标签值def loss_func(X,W,b,y): s = score(X,W,b) p = softmax(s) return -np.mean(cross_entropy(y,p))+np.mean(np.dot(w.T,w)/c)
2、欠拟合
处理方式正好和过拟合相反:
a>增加特征,增加模型的复杂度
b>减大调试参数
3、交叉验证
在训练数据上训练好模型,在测试数据看训练的效果,将测试集成绩最好的参数组合作为模型的参数,这种方法就是交叉验证。
但是为了防止特定的数据造成的偶然性,这里通过取交叉验证结果的平均值作为模型的参数成绩,这就是k折交叉算法。
import sklearnfrom sklearn import datasetsfrom sklearn.neighbors import KNeighborsClassifierfrom sklearn.model_selection import cross_val_score,KFolddata = datasets.load_iris()X = data['data']y = data['target']clf = KNeighborsClassifier()#直接算出每个交叉验证模型的得分,得到得分的数组,然后可以i取平均scores = cross_val_score(clf, data.data, data.target, cv=5)#print(scores.mean())#查看KFold的执行算法过程kf = KFold(n_splits = 5)#print(kf)#kf = KFold(len(y_train),n_folds =10)for train, test in kf.split(X): #获取训练和测试数据 #print("%s %s" % (train, test)) X_train,X_test = X[train],X[test] y_train,y_test = y[train],y[test] print(X_train,X_test)
4、Gridsearch暴力寻参
可以通过设置一个参数搜索空间,暴力搜索所有的参数组合,可以同时寻找多个最优参数。
寻找最有参数搜索范围只要要两步:第一定义搜索范围,第二在数据中尝试所有的参数组合。
紧接上例,寻找KNN模型的参数K(近邻数量)的最价值:
from sklearn.grid_search import GridSearchCV params = dict(n_neighbors = list(range(1,13)))print(params)#grid_searchgsearch = GridSearchCV(estimator =clf,param_grid=params)gsearch.fit(X,y)print(gsearch.best_params_, gsearch.best_score_)
模型的调试目标是:平衡过拟合和欠拟合,通过GridSearch 比例搜索最佳的模型参数组合。
阅读全文
0 0
- 【机器学习】Sklearn 调试模型
- 机器学习-训练模型的保存与恢复(sklearn)
- 使用keras模型和sklearn库做机器学习任务
- 使用keras模型和sklearn库做机器学习任务
- 【机器学习 sklearn】逻辑斯蒂回归模型--Logistics regression
- 【机器学习 sklearn】模型正则化L1-Lasso,L2-Ridge
- 机器学习-训练模型的保存与恢复(sklearn)
- 【机器学习sklearn】pickling
- 机器学习sklearn knn
- 机器学习 SVM sklearn
- 机器学习sklearn指东
- sklearn 机器学习练习
- 使用Sklearn模型做分类并绘制机器学习模型的ROC曲线
- 安装sklearn机器学习库
- python 机器学习-sklearn基本功能
- sklearn ------------机器学习的万能钥匙
- 机器学习-->sklearn数据预处理
- 机器学习-->sklearn.Cross-validation
- MS7024:TTL转CVBS/S-Video芯片方案
- 微程序控制器之微程序控制器构成
- 房地产虚拟现实系统--天悦湖畔iPad售楼VR系统
- 配置Git的SSH协议笔记
- list合并
- 【机器学习】Sklearn 调试模型
- python3 + OpenCV 开发环境搭建
- [Android]异常3-java.lang.NoClassDefFoundError: javax.activation.DataHandler
- 使用RxJava来实现网络请求轮询功能
- Wiggle Subsequence
- 第二节课
- python基础知识点总结
- 逆序输入数的二进制序列输出
- JDBC笔记(八)分页