>- **🍨 本文为[🔗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:指定替换策略。可选值包括:
- ‘mean':用均值替换缺失值。仅适用于数值数据
- 'median':用中位数替换缺失值。仅适用于数值数据。
- ‘most_frequent':用众数替换缺失值。适用于数值和分类数据。
- ‘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):返回独热编码后的特征名。