我非常擅长Python的机器学习功能。我想分组,即根据行中的特定文本创建一个集群。在中,有3列Sr no,Name和Summary。我想根据摘要文本中的特定值创建一个群集,即如果摘要包含文本" Veg "那么它应该是在一个群集中,如果文本包含" 非素食 ",则它应该在另一个群集中。预期输出,其中第三列将包含聚类值。 所有素食被分组到群集0和非素食群集到群集1
K-means可以为我解决这个问题。但是如何根据摘要中的文本进行聚类。请帮助。提前谢谢。
答案 0 :(得分:1)
我会比评论中的建议更进一步,并说你不需要使用Python来完成这项任务。为什么不在cluster
列中包含以下公式:
=IF(ISNUMBER(SEARCH("non veg", D3)), 1, IF(ISNUMBER(SEARCH("veg", D3)), 0, -1))
假设你的故事的左上角是B2,这是第一行中的公式(即在表格的单元格E3中)。这对于包含non veg
的任何单元格应为0,对于包含veg
的单元格应为1,对于任何不包含{0}的行都应为-1。
你可以按照@ juanpa.arrivillaga的建议在Python中做类似的事情,但是如果你的输入和所需的输出是excel,并且在excel中有一个简单的方法,我会建议& #39;最简单的选择。
答案 1 :(得分:0)
您可以使用xlrd
来读取Excel文件。
您也可以使用pandas
来阅读Excel文件。
以下演示使用pandas
步骤
Dataframe
。 pandas.read_excel
方法。根据每行Summary
值编写一个返回簇号的函数。
Input to this function is row
output is 0(Vegetarian), 1(Non Vegetarian), -1(not define)
将此功能应用于Dataframe的每一行。
pandas.to_excel
方法将最终输出写回Excel文件。<强>码强>
>>> import pandas as pd
>>> a = "43583564_input.xlsx"
>>> df = pd.read_excel(a)
>>> df
sr. no Name Summary
0 1 T1 I am Vegetarian
1 2 T2 I am Non Vegetarian
2 3 T3 I am Non Vegetarian
3 4 T4 I am Vegetarian
4 5 T5 I am Non Vegetarian
>>> def getCluster(row):
... if row["Summary"]=="I am Non Vegetarian":
... return 1
... elif row["Summary"]=="I am Vegetarian":
... return 0
... else:
... return -1
...
>>> df["Cluster"] = df.apply(getCluster, axis=1)
>>> df
sr. no Name Summary Cluster
0 1 T1 I am Vegetarian 0
1 2 T2 I am Non Vegetarian 1
2 3 T3 I am Non Vegetarian 1
3 4 T4 I am Vegetarian 0
4 5 T5 I am Non Vegetarian 1
>>> df.to_excel("43583564_output.xlsx")