Python 如何以编程方式对对象列表进行分类

Python 如何以编程方式对对象列表进行分类,python,machine-learning,artificial-intelligence,classification,Python,Machine Learning,Artificial Intelligence,Classification,我试图获取一长串对象(在本例中,是来自iTunes应用商店的应用程序),并对它们进行更具体的分类。例如,目前有很多应用程序被归类为“教育”,但我想把它们归类为生物、英语、数学等 这是人工智能/机器学习问题吗?我在这方面没有任何背景,但我想了解一些关于这类事情从哪里开始的资源或想法。可能没有。您需要做相当多的工作来提取一些可用形式的数据(例如名称),最终,可能只有很少的类别,手动为每个类别识别一个关键字列表并在标题/描述上设置一个解析器会更容易 例如,你可以浏览六个生物学应用程序,发现在你可以访问

我试图获取一长串对象(在本例中,是来自iTunes应用商店的应用程序),并对它们进行更具体的分类。例如,目前有很多应用程序被归类为“教育”,但我想把它们归类为生物、英语、数学等


这是人工智能/机器学习问题吗?我在这方面没有任何背景,但我想了解一些关于这类事情从哪里开始的资源或想法。

可能没有。您需要做相当多的工作来提取一些可用形式的数据(例如名称),最终,可能只有很少的类别,手动为每个类别识别一个关键字列表并在标题/描述上设置一个解析器会更容易

例如,你可以浏览六个生物学应用程序,发现在你可以访问的名称/描述/任何东西中,“细胞”、“生命”和“生长”这几个词出现得相当频繁——不是机器学习的结果,而是你自己的人类直觉的结果。因此,构建一个解析器,将所有使用这些单词的内容分类为生物应用程序,并对其他类别执行类似的操作


除非您试图对整个iTunes应用商店进行分类,否则这就足够了,而且手动检查任何具有多个分类或没有分类的应用对您来说是一项相对较小的任务。使用简单的解析器+手动检查异常所涉及的工作量可能远小于构建更复杂的解析器以帮助机器学习、设置机器学习,然后再次检查所有内容所涉及的工作量,因为机器学习并非100%准确。

可能并非如此。您需要做相当多的工作来提取一些可用形式的数据(例如名称),最终,可能只有很少的类别,手动为每个类别识别一个关键字列表并在标题/描述上设置一个解析器会更容易

例如,你可以浏览六个生物学应用程序,发现在你可以访问的名称/描述/任何东西中,“细胞”、“生命”和“生长”这几个词出现得相当频繁——不是机器学习的结果,而是你自己的人类直觉的结果。因此,构建一个解析器,将所有使用这些单词的内容分类为生物应用程序,并对其他类别执行类似的操作


除非您试图对整个iTunes应用商店进行分类,否则这就足够了,而且手动检查任何具有多个分类或没有分类的应用对您来说是一项相对较小的任务。使用一个简单的解析器+手动检查异常所涉及的劳动可能远远少于构建一个更复杂的解析器来帮助机器学习、设置机器学习,然后再次检查所有内容所涉及的劳动,因为机器学习并非100%准确。

是的,您是正确的。分类是一个机器学习问题,基于文本数据的分类涉及自然语言处理

典型分类问题是使用朴素贝叶斯分类器检测垃圾邮件,这非常简单。其思路如下:

  • 收集大量数据(电子邮件),并按类别对其进行标记(垃圾邮件或非垃圾邮件)
  • 对于每封电子邮件,删除stopwords,并获得该电子邮件中唯一单词的列表
  • 现在,计算每个单词出现在垃圾邮件和非垃圾邮件中的概率(即统计垃圾邮件和非垃圾邮件中的出现次数)
  • 现在你有了一个模型——假设一封电子邮件包含一个单词,那么它成为垃圾邮件的概率。然而,电子邮件包含许多单词。在NaiveBayes中,您假设单词彼此独立出现(这是一个确定的假设),并将电子邮件中所有单词的概率相乘
  • 你通常将数据分为训练和测试两部分,因此你会收到一组训练模型的电子邮件,然后是一组标记的内容,你会根据这些内容进行测试,计算准确度和召回率
  • 我强烈推荐使用NLTK,一个python机器学习和nlp库。它非常用户友好,有很好的文档和教程,是熟悉该领域的好方法


    编辑:介绍如何使用代码构建简单的NB分类器。

    是的,您是正确的。分类是一个机器学习问题,基于文本数据的分类涉及自然语言处理

    典型分类问题是使用朴素贝叶斯分类器检测垃圾邮件,这非常简单。其思路如下:

  • 收集大量数据(电子邮件),并按类别对其进行标记(垃圾邮件或非垃圾邮件)
  • 对于每封电子邮件,删除stopwords,并获得该电子邮件中唯一单词的列表
  • 现在,计算每个单词出现在垃圾邮件和非垃圾邮件中的概率(即统计垃圾邮件和非垃圾邮件中的出现次数)
  • 现在你有了一个模型——假设一封电子邮件包含一个单词,那么它成为垃圾邮件的概率。然而,电子邮件包含许多单词。在NaiveBayes中,您假设单词彼此独立出现(这是一个确定的假设),并将电子邮件中所有单词的概率相乘
  • 你通常将数据分为训练和测试两部分,因此你会收到一组训练模型的电子邮件,然后是一组标记的内容,你会根据这些内容进行测试,计算准确度和召回率
  • 我强烈推荐使用NLTK,一个python机器学习和nlp库。它非常用户友好,有很好的文档和教程,是熟悉该领域的好方法


    编辑:关于如何用代码构建一个简单的NB分类器。

    尝试搜索模糊逻辑、神经网络谷歌有一个你可能感兴趣的预测API:你可能想看看《编程汇编》一书