机器学习数据预处理(sklearn库系列函数)

【1】

sklearn.preprocessing.PolynomialFeatures
PolynomialFeatures有三个参数

degree:控制多项式的度
interaction_only: 默认为False,如果指定为True,那么就不会有特征自己和自己结合的项,上面的二次项中没有a^2和b^2。
include_bias:默认为True。如果为True的话,那么就会有上面的 1那一项。

例子1,interaction_only为默认的False时
from sklearn.preprocessing import PolynomialFeatures
a = [[2,4]]
pol = PolynomialFeatures()
b = pol.fit_transform(a)
print(b)

out:array([[ 1.  2.  4.  4.  8. 16.]])    #符合(1,a,b,a^2,ab, b^2)


例子2,interaction_only=True时
from sklearn.preprocessing import PolynomialFeatures
a = [[2,4]]
pol = PolynomialFeatures(interaction_only=True)
b = pol.fit_transform(a)
print(b)
out:array([[1. 2. 4. 8.]])    #输出中不包含a^2和b^2项

【2】

sklearn.preprocessing.scale(X, axis=0, with_mean=True,with_std=True,copy=True)

X:数组或者矩阵
axis:int类型,初始值为0,axis用来计算均值 means 和标准方差 standard deviations. 如果是0,则单独的标准化每个特征(列),如果是1,则标准化每个观测样本(行)。
with_mean: boolean类型,默认为True,表示将数据均值规范到0
with_std: boolean类型,默认为True,表示将数据方差规范到1

X_mean = X.mean(axis=0)
X_std = X.std(axis=0)
X1 = (X-X_mean)/X_std  #因为python的广播机制,会产生和上面函数相同的效果

【3】

sklearn.preprocessing.StandardScaler


from sklearn import preprocessing 
import numpy as np
X = np.array([[ 1., -1.,  2.],
              [ 2.,  0.,  0.],
              [ 0.,  1., -1.]])
scaler = preprocessing.StandardScaler()
X_scaled = scaler.fit_transform(X)
此方法和上面的效果相同

【4】

sklearn.preprocessing.MinMaxScaler()   #将特征的取值缩小到一个范围(如0到1)

from sklearn import preprocessing   #注意:这些变换都是对列进行处理
import numpy as np
X = np.array([[ 1., -1.,  2.],
              [ 2.,  0.,  0.],
              [ 0.,  1., -1.]])
min_max_scaler = preprocessing.MinMaxScaler()
X_minMax = min_max_scaler.fit_transform(X)

#真实的操作如下,也是对于列进行操作
X_std=(X-X.min(axis=0))/(X.max(axis=0)-X.min(axis=0))
X_minmax=X_std/(X.max(axis=0)-X.min(axis=0))+X.min(axis=0))

【5】 特征缩放

import pandas as pd
import numpy as np
import matplotlib.pylab as plt


dataset = pd.read_csv('Data.csv')
X = dataset.iloc[:,:-1].values
y = dataset.iloc[:,-1].values

#缺失数据处理的类
from sklearn.preprocessing import Imputer

#构造类的实例化对象
#Imputer为数据预处理的类,专门处理数据的缺失
'''
参数:
missing_values为缺失的数据怎样辨认,默认为NaN,也就是缺失数据
strategy:处理初始的方式,平均数,中位数,重树
axis=0:求一列的平均值,axis=1求一行的平均值
'''
imputer = Imputer(missing_values='NaN',strategy='mean',axis=0)
imputer = imputer.fit(X[:,1:3])
X[:,1:3] = imputer.transform(X[:,1:3])


#one-hot编码
#LabelEncoder的类
#一定要先利用LabelEncoder进行处理,然后再进行OneHotEncoder进行处理
from sklearn.preprocessing import LabelEncoder,OneHotEncoder
lablencoder_X=LabelEncoder()
X[:,0] = lablencoder_X.fit_transform(X[:,0])

#categorical_features表示处理的数据在数据集的哪一列
oneHotEncoder = OneHotEncoder(categorical_features=[0])
X = oneHotEncoder.fit_transform(X).toarray()


lablencoder_=LabelEncoder()
y = lablencoder_X.fit_transform(y)

#划分数据集为测试集和训练集
from sklearn.model_selection import train_test_split
#train_test_split
'''
参数:
test_size:0-1之间的数据,表明测试集的数据占多少
random_state:整数,相当于随机数种子
'''
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,
                                                 random_state=0)


#特征缩放 将不同数量级的数据缩放到同一数量级
#标准化,正则化
#标准化:减去均值并除以标准方差得到的是均值为0,方差为1的分布
#正则化:减去最小值并处以最大值和最小值的差 得到的为[0,1]之间的分布
from sklearn.preprocessing import StandardScaler
#虚拟变量特征缩放可能对模型有提升
sc_X = StandardScaler()
#直接拟合转换
X_train = sc_X.fit_transform(X_train)
#sc_X已经拟合好了,直接进行转换就行
X_test = sc_X.transform(X_test)

你可能感兴趣的:(python,sklearn)