【机器学习100天】数据预处理 | 第1天

博主分享了自己初次接触机器学习项目的过程,主要进行了数据预处理,包括处理缺失值、编码分类数据和数据集划分。使用了SimpleImputer进行缺失值填充,OneHotEncoder对分类数据进行编码,以及ColumnTransformer来处理不同类型的列。同时,还涉及了数据集的训练集和测试集划分以及特征缩放。博主表示虽然目前还不完全理解,但会逐步深入学习。

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

跟这个项目的初衷是想学习一下机器学习,然后偶然发现了这个项目,准备跟下来,为自己研究生的学习做一下准备,以后每次写完会更新一下csdn,权当是做笔记了。

第一天:数据预处理实现

下面是完整的代码:

#Step 1: Importing the libraries 导入库
import numpy as np
import pandas as pd

#Step 2: Importing dataset 导入数据集
dataset = pd.read_csv('C:\\Users\\Amanda\\Desktop\\python\\ML-Learning\\datasets\\Data.csv')
X = dataset.iloc[:,:-1].values
Y = dataset.iloc[:, 3].values

#Step 3: Handling the missing data 处理缺失值
# 遇到报错 cannot import name 'Imputer' from 'sklearn.preprocessing' 项目是4年前的了,所以有很多包都换位置了,也很正常。
# 解决方案:https://blog.csdn.net/xiaohutong1991/article/details/107812258
from sklearn.impute import SimpleImputer
imp_mean = SimpleImputer(missing_values = np.nan, strategy = "mean")
imp_mean = imp_mean.fit(X[ : , 1:3])
X[ : , 1:3] = imp_mean.transform(X[ : , 1:3])

#Step 4: Encoding categorical data 编码分类数据
from sklearn.preprocessing import LabelEncoder,OneHotEncoder
labelencoder_X = LabelEncoder()
X[:,0] = labelencoder_X.fit_transform(X[:,0])

# 遇到报错:TypeError: __init__() got an unexpected keyword argument 'categorical_features'
# https://blog.csdn.net/qq_44635691/article/details/104374481
# https://blog.csdn.net/qq_43201403/article/details/109552348
from sklearn.compose import ColumnTransformer
ct = ColumnTransformer(transformers=[('Country', OneHotEncoder(), [0, 1])])
X = ct.fit_transform(X).toarray()
labelencoder_Y = LabelEncoder()
Y = labelencoder_Y.fit_transform(Y)

#Step 5: Splitting the datasets into training sets and Test sets 将数据集分为训练集和测试集
# 遇到报错:ModuleNotFoundError: No module named 'sklearn.cross_validation'
# from sklearn.cross_validation import train_test_split
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)

#Step 6: Feature Scaling
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.fit_transform(X_test)

最后的结果是这样的,虽然暂时我也没看懂到底是什么意思,我自己学习新东西是需要一个过程,刚开始不懂,但是先慢慢做着,做着做着吧,也就逐渐理解最开始的一些东西了,所以准备闷头干一段时间,到时候再回过头来看看究竟是干什么的。
结果

第一天是用到了这几个类:SimpleImputer、OneHotEncoder、ColumnTransformer

SimpleImputer

这个类是在第3步里用到的,用于处理缺失值,不难理解。

imp_mean = SimpleImputer(missing_values = np.nan, strategy = "mean")

这里只使用了两个参数,一个是missing_values ,另一个是strategy 。
strategy包括了:mean,median和constant
此外,还有这些参数:fill_value(填充值),verbose,copy,add_indicator

OneHotEncoder

分类编码变量,将每一个类可能取值的特征变换为二进制特征向量,每一类的特征向量只有一个地方是1,其余位置都是0
具体可以看看这个:http://www.manongjc.com/article/45336.html
作用是用于处理离散型特征,阿,数学,开始了开始了,要开始补课了T0T

ColumnTransformer

允许将特定的转换或转换序列仅应用于数字列,而将单独的转换序列仅应用于类别列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值