Я новичок в python. В настоящее время я изучаю тепловые карты и евклидовы расстояния. У меня есть образец файла ниже:
Образец демонстрационного файла
Что я пытался сделать: у меня есть 3 столбца в файле примера, а именно ['bush', 'gore', 'nade']
. Я хочу рассчитать попарные расстояния между парами значений в каждой строке и построить результирующую матрицу в виде тепловой карты и обозначить оси. Вот мой код:
import pandas as pd
from sklearn import preprocessing
from sklearn.metrics.pairwise import euclidean_distances
%matplotlib inline
data = pd.read_csv("demo.csv",sep=',')
column_names=['bush', 'gore', 'nade']
#data1=data.iloc[:,list(data.columns[:,11:12]) + list(data.columns[14])]
data1=data.iloc[:,column_names]
X=data1.values
X_scaled = preprocessing.scale(X)
data1s = pd.DataFrame(X_scaled, index=data1.index, columns=data1.columns)
dists = euclidean_distances(data1s.sort_index().values)
plt.imshow(dists)
Я воспользовался помощью интернет-ресурсов, чтобы придумать этот код, но я не думаю, что делаю это правильно. Я получаю ошибку cannot perform reduce with flexible type
. Пожалуйста, помогите.
Кроме того, если я хочу расширить это более чем на 3 столбца, как мне это сделать. Например, обобщите код, чтобы я мог его расширить, если бы мне пришлось составить тепловую карту, скажем, для 7 или 8 столбцов. Пожалуйста, помогите.