如何将欧式距离DataFrame转换为适配分类器的x-y-class格式?
转换欧式距离矩阵为分类用的二维坐标数据集
原DataFrame是11个样本的两两欧式距离矩阵,无法直接用于需要x、y特征的分类模型。我们可以通过**多维缩放(MDS)**将距离矩阵映射到二维空间,得到每个样本的x、y坐标,再结合类别标签生成目标格式的数据集,具体操作如下:
步骤1:预处理原数据并定义类别标签
import pandas as pd from sklearn.manifold import MDS # 原欧式距离矩阵 df = pd.DataFrame({ 'O1': [0.0, 1.7, 1.4, 0.4, 2.2, 3.7, 5.2, 0.2, 4.3, 6.8, 6.0], 'O2': [1.7, 0.0, 1.0, 2.0, 1.3, 2.6, 4.5, 1.8, 3.2, 5.9, 5.2], 'O3': [1.4, 1.0, 0.0, 1.7, 0.9, 2.4, 4.1, 1.5, 3.0, 5.5, 4.8], 'O4': [0.4, 2.0, 1.7, 0.0, 2.6, 4.0, 5.5, 0.3, 4.6, 7.1, 6.3], 'O5': [2.2, 1.3, 0.9, 2.6, 0.0, 1.7, 3.4, 2.4, 2.1, 4.8, 4.1], 'O6': [3.7, 2.6, 2.4, 4.0, 1.7, 0.0, 2.0, 3.8, 1.6, 3.3, 2.7], 'O7': [5.2, 4.5, 4.1, 5.5, 3.4, 2.0, 0.0, 5.4, 2.5, 1.6, 0.9], 'O8': [0.2, 1.8, 1.5, 0.3, 2.4, 3.8, 5.4, 0.0, 4.4, 6.9, 6.1], 'O9': [4.3, 3.2, 3.0, 4.6, 2.1, 1.6, 2.5, 4.4, 0.0, 3.4, 2.9], 'O10':[6.8, 5.9, 5.5, 7.1, 4.8, 3.3, 1.6, 6.9, 3.4, 0.0, 1.0], 'O11': [6.0, 5.2, 4.8, 6.3, 4.1, 2.7, 0.9, 6.1, 2.9, 1.0, 0.0] }) # 设置索引为样本名称,确保矩阵行列对应样本一致 df.index = ['O1','O2','O3','O4','O5','O6','O7','O8','O9','O10','O11'] # 定义样本类别:O1-O8为class 0,O9-O11为class 1 class_labels = [0]*8 + [1]*3
步骤2:用MDS转换为二维坐标并生成目标数据集
# 初始化MDS模型,指定输出2维坐标,使用预计算的距离矩阵 mds = MDS(n_components=2, dissimilarity='precomputed', random_state=42) # 转换得到每个样本的二维坐标 coordinates = mds.fit_transform(df) # 构建包含x、y、class的目标DataFrame result_df = pd.DataFrame({ 'x': coordinates[:, 0], 'y': coordinates[:, 1], 'class': class_labels }) # 查看转换后的结果 print(result_df)
步骤3:执行分类训练与可视化(翻译后代码)
from sklearn.model_selection import train_test_split from sklearn.naive_bayes import GaussianNB import seaborn as sns # 拆分特征矩阵X(x、y列)和标签y(class列) X = result_df[['x', 'y']] y = result_df['class'] # 拆分训练集和测试集,测试集占比25% X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42) # 初始化并训练高斯朴素贝叶斯分类器 model = GaussianNB() model.fit(X_train, y_train) # 预测测试集的类别和概率 y_pred = model.predict(X_test) y_proba = model.predict_proba(X_test) # 绘制测试集样本散点图,用预测类别区分颜色 sns.scatterplot(x=X_test['x'], y=X_test['y'], hue=y_pred)
说明
MDS是专门用于从距离矩阵还原低维坐标的算法,能最大程度保留样本间的相对距离关系,刚好适配从欧式距离矩阵生成分类用二维特征的需求。
内容的提问来源于stack exchange,提问作者lo7
相关产品推荐
相关产品推荐

