资讯专栏INFORMATION COLUMN

合成特征和离群值(接上篇的补充)

XUI / 3005人阅读

摘要:合成特征和离群值学习目标尝试合成特征上一次我们只使用了单个特征,但这是不切实际的,往往我们需要多个特征,但此次并不是使用多个特征,而是创建一个合成特诊和特征都会统计指定街区的相关总计数据。

合成特征和离群值

学习目标:

尝试合成特征

上一次我们只使用了单个特征,但这是不切实际的,往往我们需要多个特征,但此次并不是使用多个特征,而是创建一个合成特诊

total_roomspopulation 特征都会统计指定街区的相关总计数据。
但是,如果一个街区比另一个街区的人口更密集,会怎么样?我们可以创建一个合成特征(即 total_roomspopulation 的比例)来探索街区人口密度与房屋价值中位数之间的关系。

# 创建合成特征
california_housing_dataframe["rooms_per_person"] =california_housing_dataframe["total_rooms"]/california_housing_dataframe["population"]

calibration_data = train_model(
    learning_rate=0.0005,
    steps=500,
    batch_size=1,
    input_feature="rooms_per_person"
)

结果:

Training model... 
RMSE (on training data):
period 00 : 237.29
period 01 : 237.04
period 02 : 236.78
period 03 : 236.53
period 04 : 236.28
period 05 : 236.03
period 06 : 235.78
period 07 : 235.53
period 08 : 235.27
period 09 : 235.02
Model training finished

效果很差,因为RMSE变化很小,我们可以尝试增大学习速率,*10 learning_rate=0.005

Training model... 
RMSE (on training data):
period 00 : 235.03
period 01 : 232.52
period 02 : 230.03
period 03 : 227.56
period 04 : 225.13
period 05 : 222.70
period 06 : 220.38
period 07 : 217.95
period 08 : 215.54
period 09 : 213.17
Model training finished.

可以发现RMSE是在逐渐收敛的,学习速率没有过大,继续*10 learning_rate=0.05

Training model... 
RMSE (on training data):
period 00 : 212.86
period 01 : 190.91
period 02 : 172.64
period 03 : 155.99
period 04 : 149.72
period 05 : 141.27
period 06 : 136.94
period 07 : 134.30
period 08 : 131.94
period 09 : 130.69
Model training finished.


从RMSE的下降速率来看,说明已经接近最小值了,为其增大一点点,+0.005 learning_rate=0.055

Training model...
RMSE (on training data):
period 00 : 210.61
period 01 : 185.76
period 02 : 166.58
period 03 : 150.86
period 04 : 142.97
period 05 : 136.05
period 06 : 133.06
period 07 : 132.46
period 08 : 131.34
period 09 : 130.55
Model training finished.

predictions targets
count 17000.0 17000.0
mean 170.9 207.3
std 77.4 116.0
min 41.1 15.0
25% 140.6 119.4
50% 168.3 180.4
75% 191.9 265.0
max 3693.8 500.0

Final RMSE (on training data): 130.55

可以发现结果变化很小,我们在这里就可以停止了,因为再次尝试下去,要浪费太多的计算量和时间

识别离群值

通过上图的预测值与目标值的散点图效果,可以发现,
如果是在理想情况下,这些值将位于一条完全相关的对角线上。
但是现在却是存在许多异常的散点,如果我们能够查找到这些异常点的原因并将其筛除掉,那么效果一定会更好更贴近真实情况

# 尺寸15*6
plt.figure(figsize=(15, 6))
# 1行2列,先画第一个格
plt.subplot(1, 2, 1)
# x,y轴标签
plt.xlabel("predictioon")
plt.ylabel("targets")
# 绘制散点图
plt.scatter(calibration_data["predictions"], calibration_data["targets"])
# 第二个绘制直方图
plt.subplot(1, 2, 2)
california_housing_dataframe["rooms_per_person"].hist()

结果:

从散点图中可以看出,绝大部分的散点汇集在一条竖直的直线上(其实这也并不是一条直线,而是因为x轴的分辨率太大了,一格500),还有一些是散乱分布的
为什么大部分点会垂直排列,这个原因我们先不讲,这不是这次训练目的,我们的目的是要找出极少出的异常的点
再看直方图,大部分是在0-5这条线上,少数的应该就是异常值了,下面我们滤掉他们,并看下结果会怎样

california_housing_dataframe["rooms_per_person"] = (
    california_housing_dataframe["rooms_per_person"]).apply(lambda x: min(x, 5))
_ = california_housing_dataframe["rooms_per_person"].hist()

结果:

这次都在0-5之内了

再次训练

calibration_data = train_model(
    learning_rate=0.055,
    steps=500,
    batch_size=5,
    input_feature="rooms_per_person")

结果:
Training model...
RMSE (on training data):
period 00 : 210.41
period 01 : 184.47
period 02 : 160.39
period 03 : 140.40
period 04 : 124.11
period 05 : 117.53
period 06 : 110.61
period 07 : 108.84
period 08 : 108.26
period 09 : 108.65
Model training finished.

predictions targets
count 17000.0 17000.0
mean 191.6 207.3
std 50.1 116.0
min 44.8 15.0
25% 159.7 119.4
50% 191.7 180.4
75% 218.9 265.0
max 425.3 500.0

Final RMSE (on training data): 108.65

这次的结果好过以前的每一次,体现在RMSE下降的速度特别快,说明少了很多干扰,其次便是RMSE这次是最小的,说明去除离群值后效果真的是好了很多

plt.scatter(calibration_data["predictions"], calibration_data["targets"])

结果:

现在可以看出散点分布其实是挺集中的。


以上,结束

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44633.html

相关文章

  • 特征工程&&清洗数据

    摘要:得分与距离均值的标准偏差数相关。不过,在我们的模型中将表示为浮点特征将其看为一个浮点数,以它的数值大小为特征没有意义。清查截至目前,我们假定用于训练和测试的所有数据都是值得信赖的。良好的机器学习依赖于良好的数据。 特征工程 将原始数据映射到特征 我们在进行机器学习的时候,采用的数据样本往往是矢量(特征矢量),而我们的原始数据并不是以矢量的形式呈现给我们的,这是便需要将数据映射到特征...

    1fe1se 评论0 收藏0
  • Python数据挖掘与机器学习技术入门实战

    摘要:在本次课程中,着重讲解的是传统的机器学习技术及各种算法。回归对连续型数据进行预测趋势预测等除了分类之外,数据挖掘技术和机器学习技术还有一个非常经典的场景回归。 摘要: 什么是数据挖掘?什么是机器学习?又如何进行Python数据预处理?本文将带领大家一同了解数据挖掘和机器学习技术,通过淘宝商品案例进行数据预处理实战,通过鸢尾花案例介绍各种分类算法。 课程主讲简介:韦玮,企业家,资深IT领...

    ephererid 评论0 收藏0
  • Python数据挖掘与机器学习技术入门实战

    摘要:在本次课程中,着重讲解的是传统的机器学习技术及各种算法。回归对连续型数据进行预测趋势预测等除了分类之外,数据挖掘技术和机器学习技术还有一个非常经典的场景回归。 摘要: 什么是数据挖掘?什么是机器学习?又如何进行Python数据预处理?本文将带领大家一同了解数据挖掘和机器学习技术,通过淘宝商品案例进行数据预处理实战,通过鸢尾花案例介绍各种分类算法。 课程主讲简介:韦玮,企业家,资深IT领...

    孙吉亮 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<