Я сделал точечный график, чтобы показать важность переменных для каждой модели машинного обучения. Я хотел бы добавить соединительные линии, которые могут показать тенденцию важности функций среди разных моделей. Например, в этом случае WS всегда является наиболее важной функцией во всех методах, поэтому я хочу, чтобы была линия, соединяющая самые высокие красные точки. Соединительные линии других функций могут быть вверх и вниз. Кто-нибудь знает как это сделать? Большое спасибо!
Код для текущего графика:
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');