数据处理可谓是机器学习的重中之重,接下来我所用到的数据集和代码如下:数据集,代码
导入库
首先需要导入python库函数:
##下面两个库都是机器学习最常用的2个库
import numpy as np
import pandas as pd
## 以下的库是数据预处理需要的库
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
from sklearn.compose import ColumnTransformer
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
导入数据集
原本的数据集为:
![](https://i-blog.csdnimg.cn/blog_migrate/fc73130475255f9ceb9f143731318741.png)
![](https://i-blog.csdnimg.cn/blog_migrate/476d2d5e212e5b5456be89e9ace8e628.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5a2f6039d43a2a7d31f5867cd8d6553b.png)
处理丢失数据
很多时候,我们得到的数据集中会有数据丢失的部分,通过以下处理,在丢失数据的部分给与平均值
imputer = SimpleImputer(missing_values = np.nan, strategy = "mean")
imputer = imputer.fit(X[ : , 1:3])
X[ : , 1:3] = imputer.transform(X[ : , 1:3])
处理后的X如下,我们可以发现空白的部分被填上了平均值:
![](https://i-blog.csdnimg.cn/blog_migrate/51b19f09d3062f14d6e25408c12eb2ee.png)
数据分类
将数据集中的数据进行分类,相同的数字代表同一类
labelencoder_X = LabelEncoder()
labelencoder_Y = LabelEncoder()
X[ : , 0] = labelencoder_X.fit_transform(X[ : , 0])
ct1 = ColumnTransformer([("country" , OneHotEncoder() , [1])], 'drop')
ct2 = ColumnTransformer([("country" , OneHotEncoder() , [1])], 'drop')
X = ct1.fit_transform(X).toarray()
Y = labelencoder_Y.fit_transform(Y)
处理后的X如下,我们可以发现数据集都变成了数字,其中相同的类别数字相同:
![](https://i-blog.csdnimg.cn/blog_migrate/30a75b2c5c62aea56614467f20104bdb.png)
拆分数据集
用train_test_split拆分数据集,其中test_size表示测试集所占数据集的比例
X_train , X_test , Y_train , Y_test = train_test_split( X , Y , test_size = 0.2 , random_state = 0)
处理后的X_train(训练集)如下,占80%:
![](https://i-blog.csdnimg.cn/blog_migrate/3a2e3a87baaa94f2826b827f24165961.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c83f72812e4dbe9819c6380f50c787cb.png)
特征量化
用特征标准化或Z值归一化实现特征量化,解决其他模型算法的特征在幅度,单位和范围姿态问题上变化很大的问题
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.transform(X_test)
= StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.transform(X_test)