You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将UCI多特征数据集合并为CSV并用于机器学习任务?

问题解答

1. 将数据集合并为单个CSV文件

load_UCImultifeature返回的full_data是包含5个特征视图的列表(每个视图对应一组特征,比如傅里叶系数、像素特征等),每个视图是形状为(n_samples, n_features)的数组。要合并特征与标签并保存为CSV,可按以下两种方式操作:

方式1:拼接所有特征为单一矩阵

import pandas as pd
import numpy as np
from mvlearn.datasets import load_UCImultifeature

# 加载数据集
full_data, full_labels = load_UCImultifeature()

# 横向拼接所有视图的特征,得到单一特征矩阵
combined_features = np.hstack(full_data)

# 合并特征与标签为DataFrame
dataset = pd.DataFrame(combined_features)
dataset['label'] = full_labels

# 保存为CSV文件(index=False避免存储行索引)
dataset.to_csv('multifeature_combined.csv', index=False)

方式2:保留多视图特征结构

如果需要区分不同视图的特征,可以为每个视图的特征添加前缀后合并:

# 为每个视图的特征添加前缀,区分不同来源
view_dfs = []
for i, view in enumerate(full_data):
    view_df = pd.DataFrame(view, columns=[f'view_{i}_feat_{j}' for j in range(view.shape[1])])
    view_dfs.append(view_df)

# 合并所有视图的DataFrame,再添加标签列
combined_df = pd.concat(view_dfs, axis=1)
combined_df['label'] = full_labels

# 保存
combined_df.to_csv('multifeature_separate_views.csv', index=False)

2. 数据集在PCA、聚类分析及监督模型中的应用

2.1 PCA(主成分分析)

PCA用于特征降维,建议先对特征做标准化处理(PCA对特征尺度敏感),支持单视图和多视图两种实现方式:

单视图PCA(基于拼接后的特征)

from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler

# 标准化特征
scaler = StandardScaler()
scaled_features = scaler.fit_transform(combined_features)

# 执行PCA,指定降维后的维度(比如2维用于可视化)
pca = PCA(n_components=2)
pca_transformed = pca.fit_transform(scaled_features)

# 查看各主成分的方差解释率
print(f"主成分方差解释率: {pca.explained_variance_ratio_}")

多视图PCA(利用多视图间的关联信息)

from mvlearn.decomposition import MultiviewPCA

# 多视图PCA,将每个视图降维到2维
mv_pca = MultiviewPCA(n_components=2)
mv_pca_transformed = mv_pca.fit_transform(full_data)

# 每个视图的降维结果存储在mv_pca_transformed的列表中

2.2 聚类分析

以KMeans为例,支持单视图和多视图两种聚类方式:

单视图KMeans聚类

from sklearn.cluster import KMeans
from sklearn.metrics import adjusted_rand_score, silhouette_score

# 初始化KMeans,设置聚类数为数据集的类别数(10类,对应数字0-9)
kmeans = KMeans(n_clusters=10, random_state=42)
cluster_labels = kmeans.fit_predict(scaled_features)

# 评估聚类效果:调整兰德指数(对比真实标签)、轮廓系数
ari = adjusted_rand_score(full_labels, cluster_labels)
sil_score = silhouette_score(scaled_features, cluster_labels)
print(f"调整兰德指数: {ari:.3f}")
print(f"轮廓系数: {sil_score:.3f}")

多视图KMeans聚类

from mvlearn.cluster import MultiviewKMeans

mv_kmeans = MultiviewKMeans(n_clusters=10, random_state=42)
mv_cluster_labels = mv_kmeans.fit_predict(full_data)

# 评估多视图聚类效果
mv_ari = adjusted_rand_score(full_labels, mv_cluster_labels)
print(f"多视图KMeans调整兰德指数: {mv_ari:.3f}")

2.3 监督机器学习模型(以判别分析为例)

以线性判别分析(LDA)为例,展示完整的训练、评估流程,也可替换为随机森林、SVM等其他监督模型:

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, classification_report

# 划分训练集与测试集(8:2比例)
X_train, X_test, y_train, y_test = train_test_split(
    scaled_features, full_labels, test_size=0.2, random_state=42
)

# 训练LDA模型
lda = LinearDiscriminantAnalysis()
lda.fit(X_train, y_train)

# 预测并评估
y_pred = lda.predict(X_test)
print(f"LDA测试集准确率: {accuracy_score(y_test, y_pred):.3f}")
print("\n分类报告:\n", classification_report(y_test, y_pred))

# 示例:替换为随机森林模型
from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier(n_estimators=100, random_state=42)
rf.fit(X_train, y_train)
rf_pred = rf.predict(X_test)
print(f"\n随机森林测试集准确率: {accuracy_score(y_test, rf_pred):.3f}")

内容的提问来源于stack exchange,提问作者Maale Faustus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 12:35:23