Python 查找多个变量与目标值之间的相关性

Python 查找多个变量与目标值之间的相关性,python,pandas,numpy,correlation,Python,Pandas,Numpy,Correlation,我有一系列的单词,摘自对一家酒店的评论。 例如 数组(['advantage'、'advice'、'Annium'、'Arrized'、'aveda'、'bangs', ‘洗澡’、‘床’、‘检查’、‘清洁’、‘关门’、‘舒适’、‘成交’, “有”、“失望”、“距离”、“门”、“轻松”、“晚上”, “存在的”、“昂贵的”、“经验的”、“金鱼的”、“好的”、“得到的”, “很棒”、“过道”、“有”、“听到”、“听到”、“高”、“酒店”, “只是”、“迟到”、“喜欢”、“很少”、“位置”、“更长”、“

我有一系列的单词,摘自对一家酒店的评论。 例如

数组(['advantage'、'advice'、'Annium'、'Arrized'、'aveda'、'bangs',
‘洗澡’、‘床’、‘检查’、‘清洁’、‘关门’、‘舒适’、‘成交’,
“有”、“失望”、“距离”、“门”、“轻松”、“晚上”,
“存在的”、“昂贵的”、“经验的”、“金鱼的”、“好的”、“得到的”,
“很棒”、“过道”、“有”、“听到”、“听到”、“高”、“酒店”,
“只是”、“迟到”、“喜欢”、“很少”、“位置”、“更长”、“大声”,
“也许”、“早上”、“音乐”、“脖子”、“邻居”、“不错”、“晚上”,
‘噪音’、‘非’、‘非’、‘开放’、‘整体’、‘停车’、‘付款’,
‘人物’、‘枕头’、‘以前的’、‘产品’、‘快速’、‘评论’,
‘房间’、‘购物’、‘尺寸’、‘隔音’、‘住宿’、‘住宿’,
‘僵硬’、‘被带走’、‘说话’、‘被带走’、‘触摸’、‘代客’、‘查看’,

“行走”,“醒来”,dtype=”我不是熊猫专家,但我可以提供一种可能的方法。 您可以创建一个dict,其中关键字是一个单词,value是与该单词相关的酒店星级列表。 让我们假设您的数据是一个dict列表,它表示酒店,并且至少有以下键:score,words。其中score-是酒店的score,words-您的words数据

from collections import defaultdict
word_rates = defaultdict(list())
for hotel in hotels:
    for word in hotel['words']:
        word_rates.append(hotel['score'])
现在每个单词都有分数,如下所示:

{
    'bad': [1, 2, 1, 2, 2, 3, 2],
    'great': [4, 5, 5, 4, 4, 5, 4],
    ...
}

这取决于你如何解释它,但计算好/坏分数应该给你一个粗略的估计。

我不是熊猫专家,但我可以提供一个可能的方法。 您可以创建一个dict,其中关键字是一个单词,value是与该单词相关的酒店星级列表。 让我们假设您的数据是一个dict列表,它表示酒店,并且至少有以下键:score,words。其中score-是酒店的score,words-您的words数据

from collections import defaultdict
word_rates = defaultdict(list())
for hotel in hotels:
    for word in hotel['words']:
        word_rates.append(hotel['score'])
现在每个单词都有分数,如下所示:

{
    'bad': [1, 2, 1, 2, 2, 3, 2],
    'great': [4, 5, 5, 4, 4, 5, 4],
    ...
}

这取决于你如何解释它,但计算好/坏分数应该给你一个粗略的估计。

corr
corrwith
是为数字列设计的。为此,请看一下:

Forthmann,Boris.(2015)。Re:我可以使用皮尔逊相关性吗 了解知觉与性别、年龄、年龄之间关系的系数, 收入?从以下方面检索:


Forthmann,Boris.(2015)。Re:我可以使用皮尔逊相关性吗 了解知觉与性别、年龄、年龄之间关系的系数, 收入?从以下方面检索:


.

你需要想出一个代码,让每个单词从好到坏都有一个等级,从等级较低的好形容词开始,到等级较高的坏形容词。我会首先对它们进行排序,然后给它们一个数字代码,以反映一个单词有多好/坏。请注意,并非所有的单词都是这样需要提供代码。在这种情况下,0就可以了。

我会从这样的事情开始

words.sort()
word_coded=dict([[x,0] for x in words])
我会给你一本字典

{'advantage': 0,
 'advice': 0,
 ......
 'bed': 0,
 'check': 0,
 'clean': 0,
 ...
 'comfortable': 0,
 'deal': 0,
 'did': 0,
 ...
 'disappointed': 0,
一本字典比一张单子更容易操作。那么我会说,举个例子

 words_coded['advantage']=10
 ........
 words_coded['disappointed']=120
诸如此类。你必须手动完成这项工作,或者想出某种编码算法。无论哪种方式,一旦你对单词进行了排名,你都可以使用之类的工具来找出你的相关系数


斯皮尔曼的相关系数不作任何假设,因为它只对值进行排序,然后使用排序来计算相关性。另一方面,皮尔森的相关系数假设变量为正态分布,我不推荐在这种情况下使用。

您需要拿出一个代码来给出每个单词从好到坏的等级,从等级较低的好形容词开始,到等级较高的坏形容词。我将首先对它们进行排序,然后给它们一个数字代码,以反映单词的好坏。请注意,并非所有单词都需要一个代码。在这种情况下,0就可以了。

我会从这样的事情开始

words.sort()
word_coded=dict([[x,0] for x in words])
我会给你一本字典

{'advantage': 0,
 'advice': 0,
 ......
 'bed': 0,
 'check': 0,
 'clean': 0,
 ...
 'comfortable': 0,
 'deal': 0,
 'did': 0,
 ...
 'disappointed': 0,
一本字典比一张单子更容易操作。那么我会说,举个例子

 words_coded['advantage']=10
 ........
 words_coded['disappointed']=120
诸如此类。你必须手动完成这项工作,或者想出某种编码算法。无论哪种方式,一旦你对单词进行了排名,你都可以使用之类的工具来找出你的相关系数


斯皮尔曼的相关系数不作任何假设,因为它只对值进行排序,然后使用排序来计算相关性。另一方面,皮尔逊的相关系数假设变量为正态分布,我不推荐在这种情况下使用。

你到底想要什么?什么样的输出?嗯,理想情况下是scor对于每个描述它们如何影响评级的单词,e。例如,“脏”可以得到-0.6,这意味着它会大大降低评级。(当然,标准化为-1-1)你到底想要什么?什么样的输出?理想情况下,每个描述它们如何影响评级的单词的分数。例如,“脏”可能会得到-0.6,这意味着它会大大降低评级。(当然,标准化为-1-1)皮尔逊的相关系数假设变量为正态分布。我不认为这是真的。皮尔逊的相关系数假设变量为正态分布。我不认为这是真的。我要把它标记为“正确”回答,因为这是我最终选择的答案。如果可以的话,我会把这个和@agcala的答案都标记为正确。我会把这个标记为“正确”答案,因为这是我最终选择的答案。如果可以的话,我会把这个和@agcala的答案也标记为正确。