Python 如何找到分类列和数字列之间的相关性

Python 如何找到分类列和数字列之间的相关性,python,correlation,Python,Correlation,我正在使用Python查找数据集中分类列和数字列之间的相关性,有人能帮忙吗? 这是我的数据。 先谢谢你 光线传感器读数 灯光传感器状态 231 暗淡的 231 暗淡的 231 暗淡的 231 暗淡的 231 暗淡的 231 暗淡的 231 暗淡的 231 暗淡的 231 暗淡的 232 暗淡的 950 非常明亮 988 非常明亮 987 非常明亮 986 非常明亮 986 非常明亮 986 非常明亮 986 非常明亮 986 非常明亮 986 非常明亮 986 非常明亮 986 非常明亮 986

我正在使用Python查找数据集中分类列和数字列之间的相关性,有人能帮忙吗?
这是我的数据。 先谢谢你

光线传感器读数 灯光传感器状态 231 暗淡的 231 暗淡的 231 暗淡的 231 暗淡的 231 暗淡的 231 暗淡的 231 暗淡的 231 暗淡的 231 暗淡的 232 暗淡的 950 非常明亮 988 非常明亮 987 非常明亮 986 非常明亮 986 非常明亮 986 非常明亮 986 非常明亮 986 非常明亮 986 非常明亮 986 非常明亮 986 非常明亮 986 非常明亮 986 非常明亮 985 非常明亮 985 非常明亮
我会通过绘制数据来检查这一点。颜色必须是水平的

import seaborn as sns
sns.scatterplot(data=df, x=df.index, y='Light_Sensor_Reading', hue='Light_Sensor_Status')

我会通过绘制数据来检查这一点。颜色必须是水平的

import seaborn as sns
sns.scatterplot(data=df, x=df.index, y='Light_Sensor_Reading', hue='Light_Sensor_Status')

如果两个变量不是定量的,那么计算它们之间的相关性并不意味着什么

我想你要做的是研究它们之间的联系

目的是通过模型解释第一个变量和另一个变量

你可以使用逻辑回归


但你只知道这两个变量之间是否存在联系,这取决于数据的正态性,通过T检验或wilcoxon检验

如果这两个变量不是定量的,那么计算它们之间的相关性并不意味着什么

我想你要做的是研究它们之间的联系

目的是通过模型解释第一个变量和另一个变量

你可以使用逻辑回归


但是,根据数据的正态性,你只能通过T检验或wilcoxon检验知道这两个变量之间是否存在联系。这里的相关性感觉有点错误,但我想你可以将状态分解

假设您的数据位于数据帧
df

from pandas import factorize

labels, categories = factorize(df["Light_Sensor_Status"])
df["labels"] = labels
abs(df["Light_Sensor_Reading"].corr(df["labels"]))

相关性应该为您提供一个值
0.999820098949396

这里的相关性感觉有点错误,但我想您可以将状态分解

假设您的数据位于数据帧
df

from pandas import factorize

labels, categories = factorize(df["Light_Sensor_Status"])
df["labels"] = labels
abs(df["Light_Sensor_Reading"].corr(df["labels"]))

相关性应为您提供一个值
0.9998202098949396

我将状态编码为数字,然后使用dataframe pearson相关性函数返回相关性

from sklearn.preprocessing import LabelEncoder
Light_Sensor_Reading=[231, 231,231,231,231,231,231,231,231,232,950,988,987,986,986,986,986,986,986,986,986,986,986,985,985]
Light_Sensor_Status=['Dim','Dim','Dim','Dim','Dim','Dim','Dim','Dim','Dim','Dim','Very_bright','Very_bright','Very_bright', 'Very_bright',   'Very_bright', 'Very_bright','Very_bright','Very_bright','Very_bright','Very_bright','Very_bright',\
'Very_bright','Very_bright','Very_bright','Very_bright']

df=pd.DataFrame({'light_sensor_reading': Light_Sensor_Reading,'light_sensor_status':Light_Sensor_Status})
x=range(len(df))
sns.scatterplot(x=x, y='light_sensor_reading',data=df,hue='light_sensor_status')
plt.show()
encoder=LabelEncoder()
encoder.fit(df['light_sensor_status'])
df['light_sensor_status_enc']=encoder.transform(df['light_sensor_status'])
corr=df['light_sensor_reading'].corr(df['light_sensor_status_enc'])
print("correlation ",corr)
输出:

correlation  0.9998202098949396

我将状态编码为数字,然后使用dataframe pearson关联函数返回关联

from sklearn.preprocessing import LabelEncoder
Light_Sensor_Reading=[231, 231,231,231,231,231,231,231,231,232,950,988,987,986,986,986,986,986,986,986,986,986,986,985,985]
Light_Sensor_Status=['Dim','Dim','Dim','Dim','Dim','Dim','Dim','Dim','Dim','Dim','Very_bright','Very_bright','Very_bright', 'Very_bright',   'Very_bright', 'Very_bright','Very_bright','Very_bright','Very_bright','Very_bright','Very_bright',\
'Very_bright','Very_bright','Very_bright','Very_bright']

df=pd.DataFrame({'light_sensor_reading': Light_Sensor_Reading,'light_sensor_status':Light_Sensor_Status})
x=range(len(df))
sns.scatterplot(x=x, y='light_sensor_reading',data=df,hue='light_sensor_status')
plt.show()
encoder=LabelEncoder()
encoder.fit(df['light_sensor_status'])
df['light_sensor_status_enc']=encoder.transform(df['light_sensor_status'])
corr=df['light_sensor_reading'].corr(df['light_sensor_status_enc'])
print("correlation ",corr)
输出:

correlation  0.9998202098949396


你说的相关性是什么意思?你想通过这种关联实现什么?@RaJa我想确认他们两个都有相同的含义和关系,我们必须删除其中一个才能删除redundancy@lolowa您希望输出是什么样子?@phannhathuya−1.≤ 数≤+1.据了解。。大于0的值被认为是正相关的,我们必须保留其中一列。相关性仅在数值变量之间定义。你所说的相关性是什么意思?你想通过这种关联实现什么?@RaJa我想确认他们两个都有相同的含义和关系,我们必须删除其中一个才能删除redundancy@lolowa您希望输出是什么样子?@phannhathuya−1.≤ 数≤+1.据了解。。大于0的值被认为是正相关的,我们必须保留其中一列thank you Correlation仅在数值变量之间定义。首先,非常感谢。。由于我是这个领域的新手,如果你能给我一个图表的澄清,我将不胜感激。嗯,这是相对直接的。散布函数只是绘制所有数据点,根据分类变量为它们着色。现在,如果有一个关联,所有的橙色值都应该在900以上,而所有的蓝色值都应该在300以下。这就是我所说的“有点水平”。如果你有一个低于300的橙色点,这可能是错误的分类,或者如果有更多,那么你没有相关性。是的,这支持我的观点,他们是多余的!首先,非常感谢。。由于我是这个领域的新手,如果你能给我一个图表的澄清,我将不胜感激。嗯,这是相对直接的。散布函数只是绘制所有数据点,根据分类变量为它们着色。现在,如果有一个关联,所有的橙色值都应该在900以上,而所有的蓝色值都应该在300以下。这就是我所说的“有点水平”。如果你有一个低于300的橙色点,这可能是错误的分类,或者如果有更多,那么你没有相关性。是的,这支持我的观点,他们是多余的!首先,谢谢你的回答,但你所说的“这里的相关性感觉有点错误”是什么意思?你是说被接受的答案?我是说我同意@Adrence。计算这些变量之间的相关性是没有意义的。我所建议的是这个案例的一个技巧-首先,谢谢你的回答,但你所说的“这里的相关性感觉有点错误”是什么意思?你是说被接受的答案?我是说我同意@Adrence。计算这些变量之间的相关性是没有意义的。我所建议的是这个案例的一个技巧-P