如何找到分类列和数字列之间的相关性
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
我正在尝试使用 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