import numpy as np
import pandas as pd
dataset = pd.read_csv('Data.csv')
X = dataset.iloc[ : , :-1].values
Y = dataset.iloc[ : , 3].values
from sklearn.preprocessing import Imputer
imputer = Imputer(missing_values = "NaN", strategy = "mean", axis = 0)
imputer = imputer.fit(X[ : , 1:3])
X[ : , 1:3] = imputer.transform(X[ : , 1:3])
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder_X = LabelEncoder()
X[ : , 0] = labelencoder_X.fit_transform(X[ : , 0])
onehotencoder = OneHotEncoder(categorical_features = [0])
X = onehotencoder.fit_transform(X).toarray()
labelencoder_Y = LabelEncoder()
Y = labelencoder_Y.fit_transform(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)
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.transform(X_test)
imputer = Imputer(missing_values = 'NaN', strategy="mean",axis=0)
strategy取值支持三种,mean(均值),median(中位数),most_frequent(众数),默认mean,axis=0表示按列进行
具体用法见:数据清洗(二)——缺失值处理
通俗的来讲fit()表示建立一个“词典”,transform()表示在建立的“词典”中查找单词,而fit_transform()表示先建立“词典”然后又在里面查找。
例如:有数据A、B、C,利用fit建立一个“词典”,在“词典”中A代表1、B代表2、C代表3,而后transform()通过“词典”将A转化为1、B转化为2、C转化为3。
labelencoder_Y.fit_transform(Y)
onehotencoder.fit_transform(X).toarray()
sc_X.fit_transform(X_train)
fit_transform()前面的参数则代表有着不同规则的“词典”
比较规范的解释:fit()是为计算该类处理所需的相关参数,以标准化为例,fit()就是计算标准化所用到的均值与方差;而transform()函数则是利用fit()的结果作为参数对数据进行相应的处理,比如正规化。fit_transform()就是先调用fit(),后调用transform()。
StandardScaler标准化:将特征数据的分布调整成标准正太分布,也叫高斯分布,也就是使得数据的均值维0,方差为1。
标准化的原因在于如果有些特征的方差过大,则会主导目标函数从而使参数估计器无法正确地去学习其他特征。
更详细的解释见:预处理数据的方法总结
由于特征可能是连续型的也可能是类别型的变量,这些类别特征无法直接进入模型。要想使得类别型的变量能最终被模型直接使用,可以使用one-of-k编码或者one-hot编码。OneHotEncoder它可以将有n种值的一个特征变成n个二元的特征。
更详细的解释见:预处理数据的方法总结
将数据标签化,利于模型的建立
有不足或者不对的地方欢迎留言指正!!!