Просто чтобы прояснить, я использую Python в Jupyter Notebook
Я хочу улучшить свои навыки в области Data Science, поэтому я взял на себя проект, который был завершен на прошлой неделе.
В этом проекте моей целью было построение логистической регрессии.Я сделал свою подготовку данных и так далее, и я сделал выбор функций, и после всего этого, чтобы уточнить свою модель, я сделал corr () и получил последние функции, которые были коррелированы.
Но я думаю, что этоэто не оптимальный способ сделать работу.Я думаю, что corr () необходимо сделать до выбора функции.Поэтому я попытался сделать corr () перед выбором функции, чтобы увидеть, но у меня возникла проблема.
Давайте посмотрим, как я это сделал в первый раз (это было после всей моей подготовки данных и так далее):
- Я сделал пустышку со своими категориальными столбцами
df1=pd.get_dummies(df[[cat_cols]])
- Я согласился со своими количественными столбцами
df2=df[[cols]]
df_c=pd.concat([df1,df2],axis=1)
Я попыталсялогистическая регрессия, auc и т. д., и я сделал выбор объектов с низкой дисперсией
Features = np.array(T)
Labels = np.array(z)
#T and z are my X and y
sel = fs.VarianceThreshold(threshold=(.8 * (1 - .8)))
Features_reduced = sel.fit_transform(Features)
. А с остальными функциями я наблюдал корреляцию, чтобы сделать окончательный выбор
T.corr()
corr = T.corr()
fig = plt.figure(figsize=(12, 12))
ax = fig.add_subplot(111)
cax = ax.matshow(corr,cmap='coolwarm', vmin=-1, vmax=1)
fig.colorbar(cax)
ticks = np.arange(0,len(T.columns),1)
ax.set_xticks(ticks)
plt.xticks(rotation=90)
ax.set_yticks(ticks)
ax.set_xticklabels(T.columns)
ax.set_yticklabels(T.columns)
plt.show()
Iполучилось что-то вроде этого:
https://image.noelshack.com/fichiers/2019/14/5/1554459054-stack.png
Пока все хорошо, моя переменная была в типе "uint" или "int" или float ", так что все во всем мире отлично.
Но я думаю, что лучше увидеть корреляцию до моей моделизации. Чтобы вскоре отклонить переменную.
Поэтому я попытался выполнить этот фрагмент кода после подготовки данных, но до выбора функций:
T.corr()
corr = T.corr()
fig = plt.figure(figsize=(12, 12))
ax = fig.add_subplot(111)
cax = ax.matshow(corr,cmap='coolwarm', vmin=-1, vmax=1)
fig.colorbar(cax)
ticks = np.arange(0,len(T.columns),1)
ax.set_xticks(ticks)
plt.xticks(rotation=90)
ax.set_yticks(ticks)
ax.set_xticklabels(T.columns)
ax.set_yticklabels(T.columns)
plt.show()
Но некоторые из моих вариbles (категориальные) находятся в 'str', а не в int 'uint' больше, потому что я не сделал с ними пустышку.Таким образом, corr () не работает для них, он работает только для типов "int" и "float".
Я пытался преобразовать свою категориальную переменную в "category", но corr () не сделалЯ тоже не смог их использовать.
Я пытался преобразовать их в "int" или "float", но не было никакого способа, чтобы это работало, потому что мои категориальные столбцы были сделаны из строки, такой как "Front_Website" и т.1043 *
Так что я превращаю их в фиктивную, но теперь у меня есть так много функций в моем corr (), потому что это до выбора моей функции.
Итак, мой вопрос: как увидеть корреляцию моей базы данных?без преобразования их в пустышку раньше?
Я просто хочу увидеть корреляцию между моей переменной с самого начала.И не только тип int или float.
Надеюсь, мой пост понятен.
Спасибо.
РЕДАКТИРОВАТЬ:
Я пыталсячто
table = pd.crosstab(df['Club Member'], df['Profil Price Club'])
from scipy.stats import chi2_contingency
chi2, p, dof, expected = chi2_contingency(table.values)
print(chi2, p)
Но очень утомительно получить это для всех моих категорических столбцов.
Нет способа получить это для всех моих категориальных столбцов одновременно?