机器学习:数据预处理

>- **🍨 本文为[🔗365天深度学习训练营](https://mp.weixin.qq.com/s/0dvHCaOoFnW8SCp3JpzKxg) 中的学习记录博客**
>- **🍖 原作者:[K同学啊](https://mtyjkh.blog.csdn.net/)**

第一步:导入库

import numpy as np
import pandas as pd

第二步:导入数据集

dataset = pd.read_csv('/Data.csv')
dataset


 

X = dataset.iloc[:,:-1].values
Y = dataset.iloc[:,3].values
print(X)
print(Y)

第三步:处理丢失数据

from sklearn.impute import SimpleImputer

imputer = SimpleImputer(strategy = 'mean')#创建一个SimpleImputer实例,使用均值填充策略
imputer = imputer.fit(X[:,1:3])# 拟合数据,计算均值,并应用于所需的列(这里是第1列和第2列)

X[:,1:3] = imputer.transform(X[:,1:3])# 使用拟合的imputer转换数据
X

第四步:进行Label编码

from sklearn.preprocessing import LabelEncoder,OneHotEncoder

labelencoder_X = LabelEncoder()# 创建一个LabelEncoder实例
X[:,0] = labelencoder_X.fit_transform(X[:,0])# 对第0列进行编码
X

第五步:进行OneHot编码

onehotencode_Y = OneHotEncoder(sparse = False)
Y = onehotencoder_y.fit_transform(Y.reshape(-1,1))
Y

第六步:拆分为训练集和测试集

from sklearn.model_selection import train_test_split
X_train,X_test,Y_train,Y_test = train_test_split(X,Y,test_size = 0.2,random_state = 0)

train_test_split函数详解

train_test_split():将数据集划分为数据集与训练集。

  • X:所要划分的整体数据的特征集;
  • Y:所要划分的整体数据的结果
  • test_size:测试集数据量在整体数据量中的占比
  • random_state:若不填或者0,每次生成的数据都是随机的,可能不一样。若为整数,每次生成的数据都相同。

第七步:特征标准化

from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.transform(X_test)

知识点讲解

1:Imputer处理缺损函数

sklearn.imputs.SimpleImputer是Scikit-learn库中的一个类,用于处理数据集中缺失值的插补。它通过替换缺失值为统计值(例如均值,中位数或众数)或指定的常数来处理缺失数据。以下是SimpleImputer的详细介绍:

参数详情:

  • missing_values:指定需要替换的缺失值。默认值为np.nan,表示替换NaN值。
  • strategy:指定替换策略。可选值包括:
  1. ‘mean':用均值替换缺失值。仅适用于数值数据
  2. 'median':用中位数替换缺失值。仅适用于数值数据。
  3. ‘most_frequent':用众数替换缺失值。适用于数值和分类数据。
  4. ‘constant':用常数替换缺失值。需要同时指定fill_value参数。
  • fill_value:在strategy = 'constant'时,指定替换缺失值的常数。默认值为None.
  • add_indicator:是否添加二进制指示变量,用于指示缺失值的位置。默认值为False。

SimpleImputer 方法该要:

  • fit(X,y=None):拟合imputer,计算用于替换缺失值的统计值。
  • transform(x):使用拟合的imputer替换缺失值。
  • fit_transform(X,y=None):结合fit和transform,对数据集进行拟合并替换缺失值。

以下是一些使用SimpleImputer的示例:

import numpy as np
form sklearn.impute import SimpleImputer

#创建数据集,其中包含缺失值
X=[[1,2],[np.nan,3],[7,6],[4,np.nan]]
#创建SimpleImputer对象,指定用均值替换缺失值
imputer = SimpleImputer(strategy='mean')
#训练imputer并转移数据
X_imputed = imputer.fit_transform(X)

print(X_imputed)
#创建SimpleImputer对象,指定用常数-1替换缺失值
imputer = SimpleImputer(strategy='constant',fill_value = -1)
#训练imputer并转移数据
X_imputed = imputer.fit_transform(X)
print(X_imputed)
2.OneHotEncoder编码

sklearn.preprocessing.OneHotEncoder是Scikit-learn库中的一个类,用于将分类特征(categorical features)转换为独热编码(one-hot encoding).独热编码将分类数据表示位二进制向量,对于机器学习模型来说,这种表现形式更加友好。以下是OneHotEncoder的详细介绍:

参数详情:

  • categories:指定每个特征的类别。可以是‘auto’,表示自动推断,或者自定义类别列表。
  • drop:指定是否删除一个类别来避免共线性。可以是None(默认值,不删除),'first'(删除第一个类别)或者‘if_binary'(如果特征是二值特征,则删除第一个类别).
  • sparse:指定输出是否为稀疏矩阵。默认值为True。
  • dtype:输出数据的类型。默认值为np.float64.
  • handle_unknown:指定如何处理未知类别。可以是‘error’(默认值,抛出错误),或者‘ignore’(忽略未知类别).

以下是一些使用OneHotEncoder的示例:

import dumpy as np
from sklearn.preprocessing import OneHotEncoder

#创建数据集,其中包含分类特征
X = [['red', 1], ['green', 2], ['blue', 3], ['green',1]]

#创建OneHotEncoder对象
encoder = OneHotEncoder()
#拟合encoder并转换数据
X_encoded = encoder.fit_transform(X)
print(X_encoded.toarray())

OneHotEncoder 方法概要:

  • fit(X,y=None):拟合encoder,计算每个特征的类别。
  • transform(X):使用拟合的encoder转换数据。
  • fit_transform(X,y=None):结合fit和transform,对数据集进行拟合并转换。
  • inverse_transform(X):将独热编码转换为原始类别。
  • get_feature_names_out(input_features=None):返回独热编码后的特征名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值