{"resolved":true,"match_type":"uuid","source_type":"original_book","book_id":"cd4f7678-cd9b-4971-bde0-e9ad46a6cc71","title":"人工智能与大数据技术导论","author":null,"edition":null,"publisher":null,"year":null,"isbn":"9787302517986","requested_by":"printed_page","book":{"source_type":"original_book","book_id":"cd4f7678-cd9b-4971-bde0-e9ad46a6cc71","id":"cd4f7678-cd9b-4971-bde0-e9ad46a6cc71","uuid":"cd4f7678-cd9b-4971-bde0-e9ad46a6cc71","title":"人工智能与大数据技术导论","normalized_title":"人工智能与大数据技术导论","author":null,"edition":null,"publisher":null,"year":null,"isbn":"9787302517986","isbns":["9787302517986"],"parsed":true,"ai_readable":true,"document_type":"book","page_count":490,"navigation_url":"https://workshop.closeclaw.top/ai/book/cd4f7678-cd9b-4971-bde0-e9ad46a6cc71","title_url":"https://workshop.closeclaw.top/ai/title/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E4%B8%8E%E5%A4%A7%E6%95%B0%E6%8D%AE%E6%8A%80%E6%9C%AF%E5%AF%BC%E8%AE%BA","fixed_page_url_template":"https://workshop.closeclaw.top/ai/book/cd4f7678-cd9b-4971-bde0-e9ad46a6cc71/page/{printed_page}","path_api_url_template":"https://workshop.closeclaw.top/api/ai/book/cd4f7678-cd9b-4971-bde0-e9ad46a6cc71/page/{printed_page}","read_url":"https://workshop.closeclaw.top/api/ai/read/cd4f7678-cd9b-4971-bde0-e9ad46a6cc71","page_url":"https://workshop.closeclaw.top/api/ai/books/cd4f7678-cd9b-4971-bde0-e9ad46a6cc71/page","search_url":"https://workshop.closeclaw.top/api/ai/books/cd4f7678-cd9b-4971-bde0-e9ad46a6cc71/search"},"page":{"printed_page":250,"pdf_page":266,"physical_index":266,"physical_index_base":0,"printed_page_status":"recognized","page_sha256":"0be6dbdea885b8c7761f6678f0a724f383661a5fe649d5de72ed38b6ff0b2751"},"chapter":"第8章","content":"8.4.2 字符串数据和 one-hot 编码\n\n机器学习模型是针对数值型数据进行训练，但是模型不能从字符串数据中学习。如果我们面对的是一个字符串，比如地址中的街名（长安街），那么我们该怎么办呢？这时候就需要特征工程把字符串数据转化为数值型数据。如果见到的是字符串值，我们通常可以使用独热（one-hot）编码，将其转化为特征向量。独热编码针对我们可能见到的每个字符串都提供了一个唯一的数字。例如“长安街”，我们就指定为1，其他就为0。我们可以将这个独热编码用作表示字符串的特征向量。独热编码要求：只有一个字符串值为1，其他都为0。\n\n8.4.3 枚举数据（分类数据）\n\n分类（categorical）特征具有一些枚举数据，即一个离散数据的集合。比如，一个性别的特征可能只包含三个值：{“男”，“女”，“未知”}。我们可能想到把这些数据编码为0、1、2。但是，在机器学习模型中，一般情况下，把每个分类数据表示为一个单独的布尔值。在上面的性别例子中，模型可能使用3个不同的布尔特征。\n\n$\\mathbf { X } _ { 1 } \\mathbf { : }$ 是男的？\n\n$\\mathbf { \\boldsymbol { x } } _ { 2 } { : }$ 是女的？\n\n• $\\mathrm { X } _ { 3 } \\dot { : }$ 未知?\n\n8.4.4 好特征\n\n那么，什么样的特征才是好特征呢？首先，一个特征应具有非零值，并且特征值在数据集中至少出现5次或更多次。这样模型才能了解这个特征值和标签之间的关系。如果一个特征在具有非零值的情况下出现的次数十分少，或仅出现过一次，恐怕就不是一个值得使用的好特征，应该在预处理步骤中过滤掉。比如，房屋类型特征变量，针对某个具体的房屋类型，样本数据有很多。那么，房屋类型特征可能是一个好的特征。再比如，房屋编号可能是一个差的特征，因为每个房屋编号可能只有一个样本数据，那么模型就无法从房屋编号上学到什么东西。\n\n其次，特征应具有清晰明显（直接）的意义。这样一来，我们就可以方便地进行有效的检查。例如，以年为单位来计算一座房子的年龄要远远好于以秒为单位来计算。这方便以后排除错误和进行推理。例如，我们定义一个特征，作用是告诉我们一座房子上市了多少天才出售。有些工程师喜欢用特殊值-1来表示这座房子从未上市出售过。对于机器学习来说，这不是一个好的设计。好的主意是定义一个指示型特征，让这个特征采用布尔值，以便表示是否已定义“上市出售天数”特征。借助这种方式，原来的特征“上市出售天数”可以保持0\\~n的自然单位。\n\n人工智能与大数据技术导论\n\n250","previous_page":249,"next_page":251}