tsne+seaborn 绘制语义空间分布

import numpy as np
import matplotlib

matplotlib.use('Agg')
import matplotlib.pyplot as plt_sne
from sklearn import datasets
from sklearn.manifold import TSNE
import os

plt_sne.rcParams['font.sans-serif'] = ['SimHei']
plt_sne.rcParams['axes.unicode_minus'] = False

def plot_tsne(features, labels, epoch, fileNameDir=None):
    '''
    features:(N*m) N*m大小特征,其中N代表有N个数据,每个数据m维
    label:(N) 有N个标签
    '''
    print(features.shape, labels.shape)
    print(type(features), type(labels))
    print(np.any(np.isnan(features)), np.any(np.isinf(features)))
    features = np.nan_to_num(features)
    if not os.path.exists(fileNameDir):
        os.makedirs(fileNameDir)
    import pandas as pd
    tsne = TSNE(n_components=2, init='pca', random_state=0)
    import seaborn as sns

    # 查看标签的种类有几个
    class_num = len(np.unique(labels))  # 要分类的种类个数  eg:[0, 1, 2, 3]这个就是为4

    try:
        # x_min, x_max = features.min(0), features.max(0)
        # features = (features - x_min) / (x_max - x_min)  # 归一化,消除不同维度的量纲差别
        tsne_features = tsne.fit_transform(features)  # 将特征使用PCA降维至2维
    except:
        tsne_features = tsne.fit_transform(features)

    # 一个类似于表格的数据结构
    df = pd.DataFrame()
    df["y"] = labels
    df["comp1"] = tsne_features[:, 0]
    df["comp2"] = tsne_features[:, 1]

    # hue:根据y列上的数据种类,来生成不同的颜色;
    # style:根据y列上的数据种类,来生成不同的形状点;
    plt_sne.figure(figsize=(15,15))  #修改画布大小

    sns.scatterplot(x=df.comp1.tolist(), y=df.comp2.tolist(), hue=df.y.tolist(), style=df.y.tolist(),
                    palette=sns.color_palette("Set2", class_num),
                    data=df).set(title="T-SNE 语义空间分布图")

    # sns.scatterplot(x=df.comp1.tolist(), y=df.comp2.tolist(), hue=df.y.tolist(),
    #                 palette=sns.color_palette("Set2", class_num),
    #                 data=df).set(title="T-SNE 语义空间分布图")

    plt_sne.savefig(os.path.join(fileNameDir, "%s.jpg") % str(epoch), format="jpg")
    plt_sne.show()


if __name__ == '__main__':
    digits = datasets.load_digits(n_class=2)
    features, labels = digits.data, digits.target  #np.array()
    print(features.shape)
    print(labels.shape)

    plot_tsne(features, labels, "Set3", fileNameDir="test")

引用来源:https://blog.csdn.net/power_kaikaige/article/details/128324084

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
_ble_gap_start_advertising(&adv_params); break; case ESP_GAP_BLE_ADV_START_COMPLETE_EVT: if (param->adv_start_cmpl.status != ESP_BT_STATUS_SUCCESS) { ESP_LOGE(GATTS_TAG, "Advertising start failed"); } break; case ESP_GAP_BLE_ADV_STOP_COMPLETE_EVT: if (param->adv_stop_cmpl.status != ESP_BT_STATUS_SUCCESS) { ESP_LOGE(GATTS_TAG, "Advertising stop failed"); } else { ESP_LOGI(GATTS_TAG, "Stop adv successfully"); } break; default: break; } } static void test_gatts_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_t gatts_if, esp_ble_gatts_cb_param_t *param) { switch (event要使用Seaborn绘制饼图,你需要先安装seaborn库。然后,可以按照以下步骤) { case ESP_GATTS_REG_EVT: esp_ble_gap_set_device_name(TEST_DEVICE_NAME); esp_ble_gap_config_adv_data(&adv_config); break; case ESP_GATTS_READ_EVT: break; case ESP_GATTS_WRITE_EVT: 进行绘制饼图: 1. 导入seaborn库和matplotlib库: ```python import seaborn as sns import matplotlib.pyplot break; case ESP_GATTS_EXEC_WRITE_EVT: break; case ESP_GATTS_MTU_EVT: break; as plt ``` 2. 创建数据: ```python labels = ['A', 'B', 'C', 'D'] sizes = case ESP_GATTS_CONF_EVT: break; case ESP_GATTS_UNREG_EVT: break; case ESP_G [15, 30, 45, 10] ``` 3. 绘制饼图: ```python sns.set() # 设置ATTS_CREATE_EVT: break; case ESP_GATTS_ADD_INCL_SRVC_EVT: break; case ESP_GATTS_ADD_CHAR_EVT: break; case ESP_GATTS_ADD_CHAR_DESCR_EVT: break; case ESP_GATTSseaborn样式 plt.pie(sizes, labels=labels, autopct='%1.1f%%') plt.axis('equal_DELETE_EVT: break; case ESP_GATTS_START_EVT: break; case ESP_GATTS_STOP_EVT: break') # 设置饼图为圆形 plt.show() ``` 其中,`autopct`参数用于设置饼图中每个; case ESP_GATTS_CONNECT_EVT: break; case ESP_GATTS_DISCONNECT_EVT: break; case ESP_G部分所占比例的显示格式。 这样,就可以使用seaborn绘制饼图了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值