Как добавить линии связи между точками на точечных графиках - PullRequest
0 голосов
/ 06 ноября 2019

Я сделал точечный график, чтобы показать важность переменных для каждой модели машинного обучения. Я хотел бы добавить соединительные линии, которые могут показать тенденцию важности функций среди разных моделей. Например, в этом случае WS всегда является наиболее важной функцией во всех методах, поэтому я хочу, чтобы была линия, соединяющая самые высокие красные точки. Соединительные линии других функций могут быть вверх и вниз. Кто-нибудь знает как это сделать? Большое спасибо!

Код для текущего графика:

img

KNN = [10,  7,  0,  9,  2,  4,  1,  8,  6, 11, 12,  3,  5, 13]
SVM = [ 8, 10,  4, 12,  3,  0,  2,  5, 11,  6,  9,  1,  7, 13]
NN = [ 6, 10,  1, 12,  4,  8,  7,  3,  5,  9, 11,  0,  2, 13]
RF = [ 0,  9,  3, 10,  1,  6,  4,  8,  7, 12, 11,  2,  5, 13]
Adaboost = [ 6,  9,  7, 10,  0,  2,  5,  4,  3, 12, 11,  8,  1, 13]
GBM = [ 9, 11,  7, 10,  1,  0,  4,  6,  5, 12,  8,  3,  2, 13]

VI = pd.DataFrame(
    {'KNN': KNN,
     'SVM':SVM,
     'NN':NN,
     'RF':RF,
     'Adaboost': Adaboost,
     'GBM':GBM
    }, columns=['KNN', 'SVM', 'NN', 'RF', 'Adaboost', 'GBM'])

VI['features'] = features.columns

VI = pd.melt(VI, id_vars=['features'], value_vars=['KNN', 'SVM', 'NN', 'RF', 'Adaboost', 'GBM'])

from sklearn.preprocessing import LabelEncoder
number = LabelEncoder()

VI['features_code'] = number.fit_transform(VI['features'])
VI['variable_code'] = number.fit_transform(VI['variable'])

VI['order'] = [x for x in range(13,-1,-1)]*6

plt.figure(figsize=(10,8))
cmap = sns.color_palette("husl", 14)
ax = sns.scatterplot(x="variable", y="value",
                     hue="features", size="value",
                     palette=cmap, sizes=(50, 1000),
                     data=VI)
ax.set(xticks=range(6), xtickla[enter image description here][1]bels=VI['variable'].unique())
ax.set(yticks=range(14), yticklabels = features.columns[index])
ax.legend(loc='center right', bbox_to_anchor=(1.25, 0.5), ncol=1);
ax.set(xlabel='models', ylabel='features');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...