С помощью вопроса: Тепловая карта корреляции я попробовал следующее:
import pandas
import seaborn as sns
dataframe = pandas.read_csv("training.csv", header=0,index_col=0)
for a in list(['output']):
for b in list(dataframe.columns.values):
corr.loc[a, b] = dataframe.corr().loc[a, b]
print(b)
print(corr)
sns.heatmap(corr['output'])
Я получил следующую ошибку:
IndexError: Inconsistent shape between the condition and the input (got (8, 1) and (8,))
Я не хочу иметь тепловую карту корреляции всех значений со всеми значениями. Я только хочу иметь соотношение одного столбца по отношению к другим.
Пожалуйста, дайте мне знать, что мне не хватает.
Вы пытаетесь построить pd.Series
из pd.Series
- это не работает. pd.Series
- это 1D-объект, а seaborn.heatmap()
обычно используется для 2D-структур данных.
sns.heatmap(corr[['output']])
- сделает работу
df = pd.DataFrame(data=[[1,2,3],[5,4,3],[5,4,12]],index=[0,1,2],columns=['A','B','C'])
df.corr().loc['A',:]
Из [13]:
A 1.0
B 1.0
С 0,5
Имя: A, dtype: float64
sns.heatmap(df.corr().loc[['A'],:])
В соответствии
sns.heatmap(corr['output'])
corr['output']
является pd.Series
. Документация гласит
data
: прямоугольный набор данных2D набор данных, который может быть приведен к ndarray. Если предоставляется Pandas DataFrame, информация индекса/столбца будет использоваться для маркировки столбцов и строк.
Ты пишешь
Я не хочу иметь тепловую карту корреляции всех значений со всеми значениями. Я только хочу иметь соотношение одного столбца по отношению к другим.
В этом случае, почему тепловая карта? Ваши данные являются одномерными. Вы можете использовать диаграмму, например, с помощью pd.DataFrame.corrwith
:
dataframe.corrwith(dataframe['some_specific_column']).plot(kind='barh')
(8, 1) and (8,)
вам просто нужно изменить форму(8,)
чтобы она была(8,1)
. Допустим, массивX
равен(n,)
. чтобы получить(n,1)
тоX.reshape(-1,1)
илиX[:,np.newaxis]