Поскольку у вас есть номинальная переменная, вы не можете вычислить корреляцию как таковую.Однако один из способов получить представление о силе взаимосвязи между переменными - определить для них фиктивные переменные и выполнить серию множественных линейных регрессий.Например, если предположить, что ваши данные находятся в кадре данных с именем data
, который я немного переформатировал для ясности:
Skycond Vis
0 CLR 10SM
1 SCT103 7S
Затем мы генерируем фиктивные переменные:
demo = pd.get_dummies(data)
Skycond_CLR Skycond_SCT103 vis_10SM vis_7SM
0 1 0 1 0
1 0 1 0 1
И, наконец,подходят модели линейной регрессии.Здесь я выбираю сравнение Skycond_CLR
с переменными видимости:
from sklearn.preprocessing import LinearRegression
model.fit(demo[list(demo.columns[2:])],
demo[demo.columns[0]])
print("Model slope: ", model.coef_)
print("Model intercept:", model.intercept_)
Что дает:
Model slope: [-0.33333333 0.33333333 -0.33333333]
Model intercept: 0.6666666666666666
Конечно, только для двух выборок регрессия не говориттебе очень.По мере добавления дополнительных данных коэффициенты градиента начнут указывать на некоторую связь с выбранной зависимой переменной, которая может быть интерпретирована как суррогат для корреляции.