如何在数据聚类后根据其他列生成新列?

我有一个这样的数据框,包含以下列 – ["A","B","C","D"]

A --> 分类特征,有2个值,例如Yes或NoB --> 分类特征,有10个唯一值,如"AAXX-10","BBYY-20"等C --> 日期时间字段D --> 基于简短文本描述一个人是否对电影感兴趣的文本列(基本上是他们从剧院出来后的评论)

样本数据框

A  | B | C | D------------------------------------------------------------------------------Yes|AAXX-10|8/10/2018|"Yes I liked the movie, it was great"------------------------------------------------------------------------------Yes|BBYY-20|8/10/2017|"I liked the performance of the cast in the movie but as a whole, It was just average"------------------------------------------------------------------------------No |AANN-88|8/10/2013|"Never seen a ridiculous movie like this"

我有两个问题 –

  1. 我想基于列”D”创建一个第五列,假设为”兴趣”,它将有4个类别 ["喜欢", "不喜欢", "一般", "无法评论"]。我该怎么做?

–基于”D”,”兴趣”列应该有[“喜欢”, “一般”, “不喜欢”]–.

  1. 由于大多数列是分类和日期时间类型,还有一列是文本。在这种特定场景下,我应该如何进行特征工程,以便能够将数据输入到Kmeans中?

如何从文本特征列”D”中提取特征?

我应该将列A转换为二进制的0和1吗?

我应该对第二列进行独热编码/标签编码吗?

如何在聚类中利用日期时间特征?

我尝试过的事情 –

我对列A(转换为二进制)、B(标签编码)、C(从日期转换为年和月特征)和D(忽略此特征,因为不知道如何使用它)进行了预处理和特征工程。

基于此,我使用 kmeans.labels_ 获得了聚类,但这些聚类是数字的 1,2,3,4

我如何将这些映射到 ["喜欢", "不喜欢", "一般", "无法评论"]?如何有效地使用文本列来进行聚类?

我的查询只需要简短的答案。我不需要任何实现。


回答:

首先回答第二个问题:

A: 可以转换为二进制

B: 通过编码从一组唯一字符串中能得到什么信息?编码后你会得到一个单位矩阵(独热编码)或者一组单调递增的整数(标签编码)

C: 如果日期范围允许,你最好转换为时间戳的Unix纪元,这样可以正确计算距离。

D: 这是项目的核心。处理步骤非常复杂,但简短总结如下:

基本配方包括但不限于:

  1. 文本标准化:
    • 转换为小写或大写
    • 将数字转换为文字或去除数字,
    • 去除标点符号、重音标记和其他变音符号,
    • 去除前导或尾随空格
  2. 语料库分词(将每行分割成单个单词的列表)
    • 去除停用词,(如a, the ..)它们包含的信息很少且很常见
  3. 词干提取或词形还原。这些方法将单词简化为基本形式。词干提取相当粗糙,可能会产生无效单词,但速度快。词形还原基于词典生成有效单词,但速度较慢……还有更多其他步骤。特征提取使用TF-IDF,这是一种编码方法,为每个单词分配一个重要性得分。该方法通过在文档中多次出现时增加单词的权重,并在许多文档中常见时降低其权重来工作。

TF-IDF的示例:

from sklearn.feature_extraction.text import TfidfVectorizercorpus = [    'This is the first document.',    'This document is the second document.',    'And this is the third one.',    'Is this the first document?',]vectorizer = TfidfVectorizer()X = vectorizer.fit_transform(corpus)print(vectorizer.get_feature_names())print(X.shape)

经过这些步骤后,你将得到第一个问题的答案;输出可能看起来像这样:

enter image description here

你可以在这里找到如何完成所有这些步骤的代码(使用NLTK)。然而,你可能不被允许使用NLTK,在这种情况下,你将很难完成所有这些步骤。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注