笔记基于google制作的机器学习简介课程,课程网址:
https://developers.google.cn/machine-learning/crash-course/
使用TF的基本步骤
上图为Tensorflow工具包的当前层次结构,课程使用tf.estimator来完成大部分内容。
pandas库
pandas中的主要数据结构被实现为两类:一是DataFrame,可以想象为一个关系型数据表格,其中包含多个行和已命名的列;二是Series,为单一列,每个DataFrame中包含一个或多个Series,每个Series均有一个名称。
例:利用Series构建DataFrame对象
运行结果如下:
pd.read_csv("文件名",sep=",")用于加载数据到DataFrame中;
DataFrame.describe显示DataFrame中的统计信息;
DataFrame.head显示DataFrame中的前几个记录;
DataFrame.hist可以绘制图表便于了解一列中值的分布;
DataFrame.reindex可以重建索引,其中随机排列常用Numpy中的random.permutation
函数实现;
DataFrame.sample从DataFrame对象中返回随机样本;
使用TensorFlow的基本步骤
该模块内容:在TensorFlow中使用LinearRegressor类并基于单个输入特征预测各城市街区的房屋价值中位数;使用均方差(RMSE)评估模型预测的准确率;调整模型的超参数提高模型准确率;数据基于加利福尼亚州1990年的人口普查数据
[1]设置并检查数据
[2]构建第一个模型
提取特征值、定义目标并配置分类器
定义输入函数
训练并评估模型,训练模型可以再linear_regressor上调用train实现
linear_regressor.train(input_fn=lambda:my_input_fn(my_feature,targets),step=100)
lambda封装my_input_fn,以便传入参数my_feature和targets
评估模型
MSE均方误差=E((x-x')^2)
将数据和线类回归模型可视化
运行结果如下:
[3]调整模型超参数
整合了上述代码,在十个等分时间段内调用了该函数以观察模型的改善情况,在每个时间段内绘制相应图表,绘制模型随着时间推移权重和偏差的曲线图
调用函数train_model(learning_rate=0.00001,steps=100,batch_size=1)结果如下:
[4]模型调整
不同超参数的选择取决于数据;
训练误差应稳步减小,刚开始急剧减小,最终应随着训练收敛达到平稳状态
训练误差减小速度较慢,提高学习速率可能会有效果(不一定);
一般来讲,较低的学习速率和较大的步数、较大的批量组合效果较好;
批量大小过小可能会导致一些不稳定的情况,可以先尝试100或1000等较大的值,再逐步减小;
合成特征和离群值
合成特征:以上一个模块为例,假如特征采用人口密度,则total_rooms和population特征均会与其相关,可以对特征进行合成实现
调用train_model()时将rooms_per_person赋给参数input_feature;
离群值:创建预测值与目标值的散点图来可视化模型效果,会发现大多数散点与一条线对其,同时存在偏离该线的一些点,称为离群值,截取离群值有利于降低损失
合成特征和截取离群值的代码如下:
截取离群值后的直方图与回归模型及损失度量图,可以看出可以有效降低损失值:
THE END
2018.3.28
领取 专属20元代金券
Get大咖技术交流圈