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

how to find the correlation between categorical and numerical columns

我正在尝试使用 Python 在我的数据集中查找分类列和数字列之间的相关性,有人可以帮忙吗?
这是我拥有的数据。 提前谢谢你。

Light_Sensor_Reading Light_Sensor_Status
231 Dim
231 Dim
231 Dim
231 Dim
231 Dim
231 Dim
231 Dim
231 Dim
231 Dim
232 Dim
950 Very_bright
988 Very_bright
987 Very_bright
986 Very_bright
986 Very_bright
986 Very_bright
986 Very_bright
986 Very_bright
986 Very_bright
986 Very_bright
986 Very_bright
986 Very_bright
986 Very_bright
985 Very_bright
985 Very_bright

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

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

如果两个变量不是定量的,计算它们之间的相关性没有任何意义。

我觉得你想做的是研究他们之间的link

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

你可以使用逻辑回归。

但是您只能根据数据的正态性通过 T 检验或 wilcoxon 检验知道这两个变量之间是否存在 link

这里的相关性感觉有点不对,但我想你可以分解状态。

假设您的数据在 Pandas DataFrame 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 的值。

我将状态编码为数字,然后使用数据帧皮尔逊相关函数 return 相关

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