import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn import preprocessing
import warnings
warnings.filterwarnings('ignore')
data = datasets.load_iris()
x,y = data.data,data.target
#预处理(均值漂移)
standardized_x = preprocessing.scale(x)
print('Mean = ',standardized_x.mean(axis=0))
print('Std = ',standardized_x.std(axis=0))
#预处理(范围缩放)
scale = preprocessing.MinMaxScaler(feature_range=(0,1))
scaled_x = scale.fit_transform(x)
print('scaled data:\n',scaled_x)
#预处理(归一化:将特征向量调整为L1范数)
normalized_x = preprocessing.normalize(x,norm='l1')
print('normalized data:\n',normalized_x)
#预处理(二值化:将数值向量转为布尔向量)
binarized_x = preprocessing.Binarizer(threshold=1.5).transform(x)
print('binarized data:\n',binarized_x)
#预处理(标记编码)
labels = ['a','b','b','a','c','b','c','c','a']
encoder = preprocessing.LabelEncoder()
encoder.fit(labels)
print('Class mapping result:')
for text,label in enumerate(encoder.classes_):
print(text,'-->',label)
labels = ['b','a','b','c']
encoded_labels = encoder.transform(labels)
print('original labels:',labels)
print('encoded labels:',encoded_labels)
encoded_labels = [0,1,1,0,2,1,0,2,1,1]
decoded_labels = encoder.inverse_transform(encoded_labels)
print('encoded labels:',encoded_labels)
print('decoded_labels:',decoded_labels)