artificial-intelligence - VowpalWabbit 预测不正确。如何正确准备学习数据?
问题描述
我正在尝试学习大众根据卧室、浴室、面积和其他特征的数量来预测房价。我的训练数据示例行是:
68000 '51-OMAHA-CT| city=SACRAMENTO zip=95823 state=CA beds:3 baths:1 sq__ft:1167 type=Residential sale_date=Wed-May-21-00-00-00-EDT-2008 latitude=38.478902 longitude=-121.431028
56333 '3526-HIGH-ST| city=SACRAMENTO zip=95838 state=CA beds:2 baths:1 sq__ft:836 type=Residential sale_date=Wed-May-21-00-00-00-EDT-2008 latitude=38.631913 longitude=-121.434879
68790 '2796-BRANCH-ST| city=SACRAMENTO zip=95815 state=CA beds:2 baths:1 sq__ft:796 type=Residential sale_date=Wed-May-21-00-00-00-EDT-2008 latitude=38.618305 longitude=-121.443839
价格街 | ...总共大约 500 条记录。我的测试数据是(大约 500 条记录):
'51-OMAHA-CT| city=SACRAMENTO zip=95823 state=CA beds:3 baths:1 sq__ft:1167 type=Residential sale_date=Wed-May-21-00-00-00-EDT-2008 latitude=38.478902 longitude=-121.431028
'3526-HIGH-ST| city=SACRAMENTO zip=95838 state=CA beds:2 baths:1 sq__ft:836 type=Residential sale_date=Wed-May-21-00-00-00-EDT-2008 latitude=38.631913 longitude=-121.434879
'2796-BRANCH-ST| city=SACRAMENTO zip=95815 state=CA beds:2 baths:1 sq__ft:796 type=Residential sale_date=Wed-May-21-00-00-00-EDT-2008 latitude=38.618305 longitude=-121.443839
预测给出这些值:
4819.900391 51-OMAHA-CT
4609.826172 3526-HIGH-ST
4537.140137 2796-BRANCH-ST
这些不是正确的预测。我不确定我的训练数据是否有问题?我还是很困惑| 字符和放置功能。
解决方案
当您将特征构造为city=SACRAMENTO
时,大众将其解释为具有名称的字符串特征city=SACRAMENTO
并为其分配隐含值1.0
。city=SACRAMENTO
被散列并形成特征的索引。
当您将特征构造为beds:2
时,大众将其解释为具有名称beds
且特征值为 的特征2.0
。beds
被散列并形成索引。
因此,将表单中的特征__=__
视为枚举或离散集合中的值。当您具有连续特征时,应使用浮点值。
对城市名称使用该__=__
格式似乎很好,但是当您对纬度和经度使用相同的格式时,另一个示例不太可能共享相同的确切 lat/lng 字符串,从而能够在预测中使用该功能。在我看来,lat/lng 应该是一个基于浮点数的功能。
对于sale_date
您有类似的问题。这可能更像是一个特征工程,但也许你想把这个特征分成年份、星期几、月份等。
推荐阅读
- python - 将数据拆分为列并将其存储为二维数组
- regex - 如何检查选定的正则表达式单词是否包含子字符串?
- jakarta-ee - 为什么可空字段在此 WSO2 DSS INSERT 查询中不起作用?
- java - 使用片段
- authentication - 想要雇用我们进行渗透测试的人的身份验证
- javascript - 在 Node 和 ejs 中添加排序功能
- html - Bootstrap 4下拉菜单悬停动画
- java - 从 request.getSession 中检索属性值
- slack-api - Slack API - 从通道中远程删除斜杠命令消息
- java - 增强的 For 循环 Java