今日份学习:
这个是书本上的总结,比较详细(对于我来说),简单的可以看下面这篇文章
机器学习实战练手项目_HiSpring流云的博客-CSDN博客
一个项目案例(房地产公司)基本步骤:
1.观察大局
2.获得数据
3.从数据探索和可视化中获得洞见
4.机器学习算法的数据准备
5.选择并训练模型
6.微调模型
7.展示解决方案
8.启动,监控和维护系统
2.1使用数据
学习机器学习最好使用真实的数据进行实验
我后续应该会在kaggle上去实践,练习,这里的例子用的是加州住房价格的数据集
2.2观察大局
对数据建立起一个模型,你的模型需要从这个数据中学习,从而能够根据所以其他指标,预测其目标
2.2.1框架问题
要明确你的最终目的是什么,观察问题,确定是有监督学习还是无监督学习,是分类任务还是回归任务,该怎么选择模型。
2.2.1选择性能指标
回归任务典型的性能指标是均方误差(RMSE)详细的理解可以看p46页,均方差
分类任务主要的性能指标是混淆矩阵,精确度
2.2.3检查假设
列举和验证做出的假设是很重要的,明确最终目的被设定为回归还是分类是非常好的
2.3获取数据
2.3.1下载数据
我后续是会在kaggle上实践,上面有下载的链接,导入数据一般是用pandas中的read_csv来实现
2.3.2查看数据结构
可以通过数据名. head来查看前五行数据的基本特征
用info()方法可以快速获取数据集的简单描述,特别是总行数 每个属性的类型和非空值的数量
describe()可以显示数值属性的摘要,如count,mean,min,max,std等等,其中std为标准差,越小越稳定,分布越均匀
还可以通过直方图来快速了解数据类型
2.3.3创建测试集
为防止出现数据窥探偏误(书p56),我们可以创建测试集,比较简单,通常是数据集的20%,如果数据集很大,比例可以更小,可以通过sklearn中的 train_test_split来进行分割,在分割数据集的时候,最好在设置一个随机数生成器的种子,可以让他始终生成相同的随机序列
除了随机抽样,分层抽样在某些数据的选择上会更具代表性
2.4从数据探索和可视化中获得洞见
首先应该先把测试集放到一边去,我们目前在研究训练集,然后再copy一下训练集,这样可以随便尝试而不损害训练集
2.4.1讲一些数据集可视化
这里是使用事例(地理数据)可视化:这里有一个自我感觉好用的方法(应为我还是个小萌新,所以我觉得比较好用):
housing(这个是数据集). plot( kind=”scatter--(散点图的意思)”, x=”longitude”, y=”latitude”,(还可以设置)alpha=0.1来查看高密度数据点的位置)
2.4.2寻找相关性
可以通过corr()来计算出没对属性之间的标准相关系数corr_matrix=housing.corr查看
如: corr_matrix[″median_house_value(标签)″].sort_values(ascending=False)
越接近1,表示具有越强的相关性,这里的只是线性的
2.5机器学习算法的数据准备
2.5.1数据清理
在我们常用的数据集中,可能会有缺失的可能性,我们大致有以下三种:
1.放弃这些相应的区域
2.放弃整个属性
3.将缺失的值设置为某个值(0,平均值或者中位数)
详细可看p66
2.5.2处理文本和分类属性
对于文本,我们可以把这些类别从文本转到数字,详细p69
常用的方法是独热编码
2.5.3特征缩放
如果输入的数值属性具有非常大的比例差距,往往会导致机器学习算法的性能表现不佳,注意,目标值通常不需要缩放。
同比例缩放所以属性的两种常用方法是最小_最大缩放和标准化
2.6选择和训练模型
2.6.1训练和评估训练集
从sklearn中可以导入一些模型,如线性回归模型,决策树模型,随机森林模型不断通过模型对比,选择几个良好的模型在来进行更深层次的评估。
用一些训练集实例试试,通常评价回归模型性能指标用RMSE,从sklearn. metrics导入mean_squared_error函数来测量整个训练集上回归模型的人RMSE,可能会产生过拟合或者欠拟合(解决方案可以参照上一篇文章)
2.6.2使用交叉验证来更好的进行评估
可以通过k-折交叉验证功能,详细看书p76页,看评分
2.7微调模型
2.7.1网格搜索
告诉他你要进行实验的超参数是什么,以及需要尝试的值,他会使用交叉验证来进行评估所以的可能组合,详细看书p78页
2.7.2随机搜索
如果探索的组合数量较少,那么网格搜索是一种不错的方法,但是当超参数的搜索范围较大时,通常会使用随机搜索,他们使用起来大致相同,但他不会尝试所以可能的组合,而是在每次迭代中为每个超参数选择一个随机值,然后对一定数量的随机组合进行评估
2.7.3集成方法
将表现最优的模型组合起来
2.7.4通过测试集评估系统
现在是用测试集来评估最终模型的时候了,这个时候需要从测试集中获取预测器和标签,通过y_test与预测结果进行对比,查看分数,如果之前进行过大量的超参数调整,这时候评估结果会略逊于你之前使用交叉验证的表现结果(因为通过不断调整,系统在验证数据上终于表现良好,在未知数据集上可能打不到那么好的效果),注意,注意,注意,但要是出现这种情况,一定不要继续调整超参数,不要试图让测试集的结果变得好看一些,因为这些改进在泛化到新的数据集时又会变得无用功(可能会出现过拟合)。