【sklearn第四讲】数据集变换

本文介绍了scikit-learn的数据变换库,包括如何使用管道(Pipeline)进行链式估计量操作,以及如何利用FeatureUnion组合特征空间。Pipeline方便了预处理步骤的串联,FeatureUnion则允许并行特征变换,两者结合可以构建复杂的数据处理流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

机器学习训练营——机器学习爱好者的自由交流空间(入群联系qq:2279055353)

scikit-learn提供了一个数据变换库,可以实现清洗、缩减、扩展或产生特征表示。类似其它估计量,这些都由具有fit方法的类表示。fit方法从训练集学习模型参数(例如均值和标准差),transform方法应用这个变换模型到未知数据上。而fit_transform方法可以更方便高效地同时建模和变换训练数据。

管道:链式估计量

Pipeline能够把多个估计量链成一个。当预处理数据存在一个固定的步骤顺序时,例如,特征选择、归一化、分类,它是有用的。Pipeline服务于两个目的:

  • 便利和打包

只需在你的数据上调用一次fit, predict, 就可以拟合整个估计过程。

  • 联合参数选择

你可以在pipeline里立即grid search所有估计量的参数。

除了最后一个,在pipeline里的所有估计量,都必须被变换(即,必须有一个transform方法),最后的估计量可以是任何类型的(transformer, classifier等)。

使用方法

使用一个(key, value)对列表创建pipeline, 在这里key是一个字符串,表示你想要的步骤名字,value是一个估计量对象。

这里写图片描述

工具函数make_pipeline是pipeline的快速

### 使用 Sklearn 加载和处理用于数字识别的数据集 在机器学习领域,`sklearn` 提供了许多便捷的方法来加载和处理数据集。以下是关于如何使用 `sklearn` 来加载并处理医疗图像数据集(Medical-MNIST)以及进行分类与预测的具体说明。 #### 数据集简介 虽然 `sklearn` 自带的 MNIST 数据集常被用来演示手写数字识别的任务[^1],但在实际应用中,可以替换为其他类似的医学影像数据集(如 Medical-MNIST)。需要注意的是,`sklearn` 并未直接提供 Medical-MNIST 的加载接口[^2],因此需要通过外部库或其他方式下载此数据集后再将其转换成适合模型训练的形式。 #### 替代方案:自定义数据集加载流程 由于 `sklearn.datasets` 主要支持一些已封装好的小型数据集[^3],对于像 Medical-MNIST 这样的特定用途数据集,则需手动完成如下操作: 1. **获取数据源** 首先从官方渠道或者第三方资源网站下载完整的 Medical-MNIST 数据文件。 2. **预处理阶段** 将原始图片转化为 NumPy 数组形式以便后续输入到 SVM 或者神经网络模型当中去。这里给出一段简单的代码片段展示这一过程: ```python import numpy as np from PIL import Image import os def load_medical_mnist(data_dir): images = [] labels = [] for label_name in sorted(os.listdir(data_dir)): label_path = os.path.join(data_dir, label_name) if not os.path.isdir(label_path): continue for img_file in os.listdir(label_path): img_path = os.path.join(label_path, img_file) try: with Image.open(img_path).convert('L') as im: resized_img = im.resize((28, 28)) flattened_data = list(resized_img.getdata()) images.append(flattened_data) labels.append(int(label_name)) except Exception as e: print(f"Error loading {img_path}: {e}") return np.array(images), np.array(labels) ``` 上述函数实现了遍历指定目录下的子文件夹,并读取每张黑白灰阶图象再调整大小至 $28 \times 28$ 像素最后展平成为向量存储起来的过程[^4]。 3. **划分训练测试集合** 接着利用 `train_test_split()` 方法随机分割样本点形成独立的训练集和验证集: ```python from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split( images, labels, test_size=0.2, random_state=42) ``` 4. **标准化数值范围** 考虑到不同像素值可能分布在较大的区间内影响收敛速度,故建议执行零均值单位方差变换: ```python from sklearn.preprocessing import StandardScaler scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train.astype(np.float64)) X_test_scaled = scaler.transform(X_test.astype(np.float64)) ``` 5. **构建和支持向量机(SVM)** 最终选用线性核函数的支持向量机构建分类器并对未知实例做出推断: ```python from sklearn.svm import SVC svm_clf = SVC(kernel="linear", C=1.0) svm_clf.fit(X_train_scaled, y_train) y_pred = svm_clf.predict(X_test_scaled) ``` 至此完成了整个基于 `sklearn` 实现的医疗影像分类系统的搭建工作流描述。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值