首页 文章

格式化机器学习数据

提问于
浏览
0

我正在努力更好地理解如何将自己的数据表用于机器学习项目 .

我的分类是:

[categoryname, modelitem, price, soldindays]

soldindays 为目标 .

我的数据表格式为1,200,000行:

categoryname / modelitem / price / soldindays
furniture    /  chair    / 100   / 22
wood         /  table    / 79    / 4
glass        /   tv      / 190   / 9
cardboard    / desk      / 493   / 198

我不完全确定如何重新格式化数据以获得良好的预测 . 到目前为止,我使用了 K nearest neighbros = 1,但不知何故,我得到的准确度水平在5%到78%之间变化 . 根据我选择训练的数据,这似乎有很大差异 . 我将尝试训练所有这些而不仅仅是部分 .

我通过将每个非数字项转换为数字来格式化我的数据 . 我计算了每个非数字属性的唯一值 . 然后,我将每个列表中的每个项目按字母顺序排列,并将每个项目映射到其序号位置 .

例如:

map_categorynames = [aarvarks = 1, airplanes = 2]
map_modelitems = [feet = 1, shoes = 2]

它出来是这样的:

categoryname / modelitem / price / soldindays
1878    /  87    / 100  / 22
197     /  290   / 79   / 4
2854    /  785   / 190  / 9
1148    /  401   / 493  / 198

我知道由于多种原因我的准确性可能不高,但我认为数据格式化可能是最大的 . 如何以数字方式格式化我的特征,以及哪种模型/模型可能更适合我的“类型”问题?

我的第一个属性 categoryname 有大约1000个不同的类别, modelitem 也是如此 . pricesoldindays 是整数0-10000 . 输出是预测 soldindays ,以找出指定项目在其属性下出售需要多长时间 .

我一直在努力阅读和观看视频并理解这一切,但作者之间存在如此多的差异,以至于当很难坚持一个单一的教育来源时,很难积累知识 .

2 回答

  • 0

    PROBLEM TYPE

    最重要的是,请注意这是一个回归型问题,而不是分类 . 您希望尽可能接近正确的天数,而不是必须得到确切的答案(或失去所有信用) . 您的成功标准不应该是正确的百分比;相反,它应该是某种平均误差百分比 . 您可以抛弃使用独立分类预测的技术 .

    DATA SHAPE

    您如何知道您的数据包含足够的信息以进行准确的预测?通常,这一发现来自于试验各种ML算法 . 您是否对空间或任何类型的相关性进行了任何可视化,以估计最大可能的准确度?

    CURRENT METHOD

    KNN对此并不好 . 通过将它们放在线性连续体上,无法正确描述您的两个字符串功能 . 你给出的编码告诉我们,aardvark与飞机的关系比与斑马的关系更密切 . 你需要分开这些 . 正如 Matthijs 已经指出的那样,单热编码是将这些分成正交特征的理想方法 .

    modelitem 功能是否独立于该类别?如果是这样,那么它也应该是单热编码的 . 如果它是依赖的,类别的子类型,那么你有一个更难的问题:在分离主要时保持次要鉴别器相关 . 这是决策树是一个好工具的地方 .

    GENERAL RECOMMENDATION

    将此视为经典回归问题,与许多入门讲座中的规范房屋定价示例一致 . 首先探索SGD和相关算法 . 如果你没有得到满意的结果,至少你有一个坚实的起点,并可以再次发布你的精炼问题 .

  • 0

    您当前使用称为LabelEncoding的方法对您的类别进行了编码 . SKLearn中有一个method可以为你做到这一点 .

    如果使用此方法进行编码并使用诸如nearest-neighbors之类的模型,则表示类别中按类别关闭的类也在语义上非常接近 .

    对于非基于树的模型的分类值进行编码,使用OneHotEncoding要好得多 . 这将为每个填充了1或0的类创建一个列,具体取决于该条目是否属于列中指定的类 . 这看起来如下:

    Category  | is_a | is_b | is_c
    A         | 1    | 0    | 0
    B         | 0    | 1    | 0
    

    这样可以确保A远离B,因为它与您的模型的C相距离,这可以显着提高您的结果 .

相关问题