Step 1: 导入库¶
In [ ]:
import numpy as np
import pandas as pd
Step 2: 倒入数据集¶
In [ ]:
dataset = pd.read_csv('./data/Data.csv')
X = dataset.iloc[ : , :-1].values
Y = dataset.iloc[ : , 3].values
print(X)
print(Y)
[['France' 44.0 72000.0] ['Spain' 27.0 48000.0] ['Germany' 30.0 54000.0] ['Spain' 38.0 61000.0] ['Germany' 40.0 nan] ['France' 35.0 58000.0] ['Spain' nan 52000.0] ['France' 48.0 79000.0] ['Germany' 50.0 83000.0] ['France' 37.0 67000.0]] ['No' 'Yes' 'No' 'No' 'Yes' 'Yes' 'No' 'Yes' 'No' 'Yes']
Step 3: 处理丢失数据¶
In [ ]:
from sklearn.impute import SimpleImputer
imputer = SimpleImputer(missing_values = np.NAN, strategy = "mean")
X[ : , 1:3] = imputer.fit_transform(X[ : , 1:3])
遗弃用法
In [ ]:
import sklearn
from sklearn.preprocessing import Imputer
print(sklearn.__version__)
import warnings
warnings.filterwarnings("ignore")
# Imputer 在 sklearn 0.20以上版本中被 impute.SimpleImputer 取代
imputer = Imputer(missing_values = "NaN", strategy = "mean", axis = 0)
imputer = imputer.fit(X[ : , 1:3])
X[ : , 1:3] = imputer.transform(X[ : , 1:3])
0.21.2
Step 4: 编码分类数据¶
In [ ]:
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder_X = LabelEncoder()
X[ : , 0] = labelencoder_X.fit_transform(X[ : , 0])
创建虚拟变量¶
In [ ]:
onehotencoder = OneHotEncoder(categorical_features = [0])
X = onehotencoder.fit_transform(X).toarray()
labelencoder_Y = LabelEncoder()
Y = labelencoder_Y.fit_transform(Y)
Step 5: 将数据集分为训练集和测试集¶
In [ ]:
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: 特征缩放¶
In [ ]:
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.fit_transform(X_test)
特征处理总结¶
- 首先要明确有多少特征,哪些是连续的,哪些是类别的。
- 检查有没有缺失值,对确实的特征选择恰当方式进行弥补,使数据完整。
- 对连续的数值型特征进行标准化,使得均值为0,方差为1。
- 对类别型的特征进行one-hot编码。
- 将需要转换成类别型数据的连续型数据进行二值化。
- 为防止过拟合或者其他原因,选择是否要将数据进行正则化。
- 在对数据进行初探之后发现效果不佳,可以尝试使用多项式方法,寻找非线性的关系。
- 根据实际问题分析是否需要对特征进行相应的函数转换。