01了解数据集数据准备的关键和重复阶段是数据探索。一组数据太大而无法由人为每个值手动读取、检查和编辑,但在将其委托给值得花时间和计算的模型之前,仍然需要验证质量和适用性。就像将大型数据集的样本转储到电子表格程序中一样简单,只需查看每一列中出现的值的类型或范围(例如,使用零代替在没有测量的情况下为NULL)或不可能的范围或不兼容的合并(数据似乎来自多个来源,每个来源使用不同的单位。例如,华氏度与摄氏度)。数据分析工具丰富。当数据集太大而无法在电子表格程序中打开时,Python脚本或RStudio等应用程序具有强大的数据可视化、汇总或报告功能。使用您熟悉的任何方法,至少可以确定不同属性值的格式和一般分布。02数据处理工具有很多工具可以用来清理、处理和理解数据集,然后才能使用它。Python是这方面的事实标准,它有很多用于理解和操作数据的工具。像Matplotlib这样的包使得生成数据图表以供目视检查通常非常容易。Pillow提供了各种处理、转换和操作图像的功能。Python有一个用于执行统计的内置包,如果需要更多功能,NumPy也有。Python还具有广泛的内置和第三方支持,可以处理几乎所有您会遇到的文件格式,包括CSV、JSON、YAML、XML和HTML,以及更深奥的格式,例如TOML或INI文件。如果这些都不起作用,则有一个包索引器值得搜索以查看是否有解决您的问题的方法。或者,只需搜索“我想用Python做事”,大多数情况下,您会找到遇到相同问题的人及其解决方案,或者至少可以找到一些参考资料。如果Python不是你的菜,几乎所有选择的编程语言都有类似的工具和功能。我们喜欢Python的地方在于它已经为您完成了工作,并且有大量示例可以开始使用。Python在这方面没有什么神奇之处,但它是最受欢迎的选择,所以我们提倡坚持使用主流工具。另一个不错的选择是电子表格程序,例如Excel、Numbers或GoogleSheets。他们经常因为这些程序中的数据准备工作可能很麻烦而受到指责,但您可以使用它们在需要使用Python(或您选择的其他工具)之前非常快速地获得很多有用的见解和准备工作。作为一个捆绑工具,您几乎可以肯定已经在您的机器上安装并运行了其中一个。最后,不要害怕跳出框框思考——像压缩数据集这样简单的事情,您甚至无需查看数据集的内部就可以大致了解数据集的熵。如果一个数据集压缩得很好,而来自同一源的另一个数据集压缩得不太好,则第二个数据集中的数据可能比第一个数据集具有更大的熵。图像数据集不是那么容易观察到,但绝对值得花时间查看图像的总体质量,以及图像使用了哪些裁剪方法。TuriCreate等可视化功能对于理解数据非常有用。图3-1显示了一个示例。▲图3-1通过TuriCreate理解你的数据03清洗数据在理解数据集的过程中,你可能会遇到一些错误。记录数据可能会产生错误。要检查的错误类型有以下几种:一致值错误单值错误缺失值一致值错误包括可能导致整列或整组值不准确的情况,例如,使用仪器记录的数据表明被错误地校准为一个统一的数量,导致在额外的热物体旁边测量温度,用事先没有归零的天平称重,等等。这还包括来自不同来源的数据在没有转换的情况下被不正确地组合的情况:简单地压缩一套来自美国,一套来自英国,系统现在认为100摄氏度是完全合理的。单值误差用于描述异常值或不一致的错误校准,仅在少数情况下会导致不准确或完全不合逻辑的值。传感器过载一天之类的情况可能会产生比理论上可能的值高1000%的值(应该是相当明显的)。当用于记录数据的方法出现问题,或者当数据集在其生命周期的某个时刻经历了某种格式错误的转换时,可能会出现缺失值。这些可能是简单的nil或NULL值,或者一些不太有用的值,例如字符串“NONE”或默认值0。有些甚至可能只是无意义的字符,任何东西都可能出现。如果可以识别出一致的错误,这通常可以通过按一致的错误值缩放或转换整组值来纠正。单值错误和缺失值要求您要么使用某种可行的方法猜测需要替换的值,要么完全删除行或观察值以防止错误。您可以通过以下方式猜测值:取列中所有其他值的平均值;使用最接近缺失值的列中的观察值;使用一些使用其他属性知识的特定于应用程序的方法。04Transformdata在使用数据之前对数据进行transform主要有两个原因:满足要使用的算法的格式要求;使用新的推断属性改进或扩展当前数据。对于这两个目的,通常有三种数据转换:1.归一化一种将上限和下限绑定到值范围的数值数据方法,使它们更易于使用。这方面的一个例子是当对数值数据的观察需要与不同的措施进行比较时。如果您尝试根据长度、重量、年龄和失去的眼睛数量来评估不同鱼的健康状况,大概每个人都会同意使用不同的标准来比较两条鱼(例如,一只眼睛与一岁的鱼,或一厘米比较长度)。如果用同一个标准来比较,会得到不同的结果。归一化为正值很简单:2.泛化一种用更高层次的概念代替特定值的方法,以便更好地进行群体观察。当记录某些属性的方法比必要的更精确时,通常会发生这种情况。例如,如果你有某人移动的GPS统计数据,你可以将经纬度汇总到一个地址中,防止系统将每一个微小的移动都视为位置的变化。或者,将数值测量值转换为人口,这意味着相关因素可能不是以毫米为单位的个人身高测量值,而是将它们分类为低于、接近或高于平均水平。3.聚合是将一些复杂的属性汇总起来,使分析更有效的一种方法。例如,可以从文本中提取关键字(甚至词频),而不是分析文本段落(属性:文本,分类:类),只显示与给定分类最相关或唯一的方面。在这些步骤之前、之间或之后,可能会发生不同类型的数据转换,数据可能会发生变化、扩展或减少:featureconstruction一种创建新属性的方法,通常通过推理或结合其他值来实现。这方面的一个例子是泛化或聚合,其中原始值也被保留,或者更常见的是,当存在两个或更多值时(或允许发现第三个值)。例如,如果你有一家公司的名称和经营所在的国家,你可以查询其商业登记号码;如果你有某人的身高和体重,你可以构建他们的BMI。数据缩减一种删除某些属性的方法,这些属性可能与另一个与您要解决的问题无关的属性相关,也可能不相关。例如,如果您有某人的地址、邮政编码和区号,那么至少其中一条信息是多余的。也许-就像在特征构建示例中一样-出于某些算法原因,您想要分析两者,但这是不可能的。两个或多个属性之间的高相关性表明它们可能在分析中引起了错误并且可能已被删除。05验证数据集的适用性此时,你应该花更多的时间仔细研究你试图解决的问题和你打算用于任务的数据集。在AI应用之前的数据分析世界中,可能没有你想要的那么严格的规则,但你通常会知道解决方案是否有效,以及数据集是否能说明你想要的故事。相信这个小声音,因为如果你回头看,被浪费的工作是有价值的。再次探索您的数据。浏览并可视化它,使用小数据子集测试您的解决方案——做任何您需要做的事情。如果感觉还不错,那就继续吧。
