【sklearn练习】preprocessing的使用

news/2024/7/9 10:59:53 标签: sklearn, 人工智能, python

介绍

scikit-learn 中的 preprocessing 模块提供了多种数据预处理工具,用于准备和转换数据以供机器学习模型使用。这些工具可以帮助您处理数据中的缺失值、标准化特征、编码分类变量、降维等。以下是一些常见的 preprocessing 模块中的功能和用法示例:

  1. 标准化特征(Feature Scaling)

    • 使用 StandardScaler 类可以对特征进行标准化,使其具有零均值和单位方差。这对于许多机器学习算法来说是必要的。

    示例使用方法:

    python">from sklearn.preprocessing import StandardScaler
    
    scaler = StandardScaler()
    X_train_scaled = scaler.fit_transform(X_train)
    X_test_scaled = scaler.transform(X_test)
    
  2. 最小-最大缩放(Min-Max Scaling)

    • 使用 MinMaxScaler 类可以将特征缩放到指定的最小值和最大值之间,通常在0到1之间。

    示例使用方法:

    python">from sklearn.preprocessing import MinMaxScaler
    
    scaler = MinMaxScaler()
    X_train_scaled = scaler.fit_transform(X_train)
    X_test_scaled = scaler.transform(X_test)
    
  3. 编码分类变量

    • 使用 LabelEncoder 类可以将分类变量编码为整数标签。

    示例使用方法:

    python">from sklearn.preprocessing import LabelEncoder
    
    encoder = LabelEncoder()
    y_encoded = encoder.fit_transform(y)
    
  4. 独热编码(One-Hot Encoding)

    • 使用 OneHotEncoder 类可以将分类变量转换为独热编码形式,创建虚拟变量。

    示例使用方法:

    python">from sklearn.preprocessing import OneHotEncoder
    
    encoder = OneHotEncoder()
    X_encoded = encoder.fit_transform(X_categorical).toarray()
    
  5. 处理缺失值

    • 使用 SimpleImputer 类可以填充数据中的缺失值,可以选择使用均值、中位数、众数等填充策略。

    示例使用方法:

    python">from sklearn.impute import SimpleImputer
    
    imputer = SimpleImputer(strategy="mean")
    X_imputed = imputer.fit_transform(X_missing)
    
  6. 降维

    • 使用 PCA 类可以进行主成分分析(PCA)降维,将高维数据投影到低维空间。

    示例使用方法:

    python">from sklearn.decomposition import PCA
    
    pca = PCA(n_components=2)
    X_pca = pca.fit_transform(X)
    

以上是一些 preprocessing 模块中常见功能的示例用法。数据预处理是机器学习中非常重要的一步,它有助于提高模型的性能和稳定性。您可以根据您的数据和任务选择适当的预处理方法,并将其应用于您的数据,以确保数据准备得当。

实例

例1:

python">from sklearn import preprocessing
import numpy as np

a = np.array([[10,   2.7, 3.6],
             [-100, 5,   -2],
             [120,  20,  40]])
print(a)
print(preprocessing.scale(a))

输出:

python">[[  10.     2.7    3.6]
 [-100.     5.    -2. ]
 [ 120.    20.    40. ]]
[[ 0.         -0.85170713 -0.55138018]
 [-1.22474487 -0.55187146 -0.852133  ]
 [ 1.22474487  1.40357859  1.40351318]]

例2:

python">from sklearn import preprocessing                      #预处理的模块
import numpy as np
from sklearn.model_selection import train_test_split   #将数据打乱随机分为训练集和测试集的类train_test_split 
from sklearn.datasets import make_classification       #datasets中make开头的创建数据集的类make_classification 
from sklearn.svm import SVC                            #训练模型的类SVC
import matplotlib.pyplot as plt

X, y = make_classification(n_samples=300, n_features=2,
                           n_redundant=0, n_informative=2,
                           random_state=22,
                           n_clusters_per_class=1,
                           scale=100)
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.show()

X = preprocessing.scale(X)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.3)
clf = SVC()
clf.fit(X_train, y_train)
print(clf.score(X_test, y_test))
#输出为0.9555555555555556,
#当删去对X的预处理语句X = preprocessing.scale(X),这里的输出理论上减小

输出:


http://www.niftyadmin.cn/n/5312508.html

相关文章

CAD数据转pcl可读数据

//-----------------------读取CAD模型------------------------vtkSmartPointer<vtkSTLReader> reader vtkSmartPointer<vtkSTLReader>::New();reader->SetFileName("data.stl");reader->Update();//----------------------转出到poly格式------…

Serverless架构的理论基础和发展历程

引言 随着云计算技术的不断发展&#xff0c;越来越多的企业开始将应用迁移到云端。在这个过程中&#xff0c;Serverless架构逐渐成为了一种热门的技术选择。Serverless架构是一种基于事件驱动的计算模型&#xff0c;它允许开发者在不管理底层服务器的情况下构建和运行应用程序…

探索PyTorch优化和剪枝技术相关的api函数

torch.nn子模块Utilities解析 clip_grad_norm_ torch.nn.utils.clip_grad_norm_ 是 PyTorch 深度学习框架中的一个函数&#xff0c;它主要用于控制神经网络训练过程中的梯度爆炸问题。这个函数通过裁剪梯度的范数来防止梯度过大&#xff0c;有助于稳定训练过程。 用途 防止…

Git仓库的创建、常用命令、如何在 Git 中忽略文件提交以及 .gitignore 文件的作用和相关内容

Git 仓库是用来存储版本控制信息的地方&#xff0c;为我们提供了快速便捷的代码管理方式。它可以包含文件、文件夹、历史记录、元数据等。在 Git 中&#xff0c;仓库通常分为两种&#xff1a;本地仓库和远程仓库。 1、在Github中创建仓库 如果你想分享你的代码库&#xff0c;…

lm358充电器应用电路

什么是LM358 LM358是双运算放大器。内部包括有两个独立的、高增益、内部频率补偿的运算放大器&#xff0c;适合于电源电压范围很宽的单电源使用&#xff0c;也适用于双电源工作模式&#xff0c;在推荐的工作条件下&#xff0c;电源电流与电源电压无关。它的使用范围包括传感放…

普中STM32-PZ6806L开发板(有点悲伤的故事续-人灯还未了)

简介 继上篇 普中STM32-PZ6806L开发板(有点悲伤的故事) 说到 关于 普中STM32-PZ6806L开发板的LED流水灯也被烧坏掉了&#xff0c;再也无法玩流水灯, 内心充满了只会流水灯的不甘, 流水灯就是单片机的Hello World&#xff0c;怎么能没有呢&#xff1f; 事情发展 好巧不巧想起最近…

全网最详细MVCC讲解,一篇看懂

本文已收录至Github&#xff0c;推荐阅读 &#x1f449; Java随想录 微信公众号&#xff1a;Java随想录 文章目录 摘要MVCC 介绍当前读和快照读MVCC 原理解析隐式字段Undo Log版本链Read ViewRead View 可见性原则 RC 和 RR 下的 Read ViewRC 下的 Read ViewRR 下的 Read View小…

我把从react重构成vue的项目,又重构回react了

都怪我那时候小&#xff0c;不懂事&#xff0c;不知道react的好&#xff0c;信了vue邪教。 那时候是我刚学前端的时候&#xff0c;听大家说react比vue好&#xff0c;于是先学的react&#xff0c;并用react写了一个中型项目。 哪知由于自己对react的不理解&#xff0c;这个项目…