sklearn学习记录二:数据预处理
来源:互联网 发布:金米袋理财安全吗 知乎 编辑:程序博客网 时间:2024/06/05 17:45
(1)数据标准化(Standardization or Mean Removal and Variance Scaling)
进行标准化缩放的数据均值为0,具有单位方差。
scale函数提供一种便捷的标准化转换操作,如下:
- >>> from sklearn import preprocessing #导入数据预处理包
- >>> X=[[1.,-1.,2.],
- [2.,0.,0.],
- [0.,1.,-1.]]
- >>> X_scaled = preprocessing.scale(X)
- >>> X_scaled
- array([[ 0. , -1.22474487, 1.33630621],
- [ 1.22474487, 0. , -0.26726124],
- [-1.22474487, 1.22474487, -1.06904497]])
- >>> X_scaled.mean(axis=0)
- array([ 0., 0., 0.])
- >>> X_scaled.std(axis=0)
- array([ 1., 1., 1.])
同样我们也可以通过preprocessing模块提供的Scaler(StandardScaler 0.15以后版本)工具类来实现这个功能:
- >>> scaler = preprocessing.StandardScaler().fit(X)
- >>> scaler
- StandardScaler(copy=True, with_mean=True, with_std=True)
- >>> scaler.mean_
- array([ 1. , 0. , 0.33333333])
- >>> scaler.std_
- array([ 0.81649658, 0.81649658, 1.24721913])
- >>> scaler.transform(X)
- array([[ 0. , -1.22474487, 1.33630621],
- [ 1.22474487, 0. , -0.26726124],
- [-1.22474487, 1.22474487, -1.06904497]])
(2)数据规范化(Normalization)
把数据集中的每个样本所有数值缩放到(-1,1)之间。
- >>> X = [[ 1., -1., 2.],
- [ 2., 0., 0.],
- [ 0., 1., -1.]]
- >>> X_normalized = preprocessing.normalize(X, norm='l2')
- >>> X_normalized
- array([[ 0.40824829, -0.40824829, 0.81649658],
- [ 1. , 0. , 0. ],
- [ 0. , 0.70710678, -0.70710678]])
- >>> normalizer = preprocessing.Normalizer().fit(X) # fit does nothing
- >>> normalizer
- Normalizer(copy=True, norm='l2')
- >>> normalizer.transform(X)
- array([[ 0.40824829, -0.40824829, 0.81649658],
- [ 1. , 0. , 0. ],
- [ 0. , 0.70710678, -0.70710678]])
- >>> normalizer.transform([[-1., 1., 0.]])
- array([[-0.70710678, 0.70710678, 0. ]])
(3)二进制化(Binarization)
将数值型数据转化为布尔型的二值数据,可以设置一个阈值(threshold)
- >>> X = [[ 1., -1., 2.],
- [ 2., 0., 0.],
- [ 0., 1., -1.]]
- >>> binarizer = preprocessing.Binarizer().fit(X) # fit does nothing
- >>> binarizer
- Binarizer(copy=True, threshold=0.0) # 默认阈值为0.0
- >>> binarizer.transform(X)
- array([[ 1., 0., 1.],
- [ 1., 0., 0.],
- [ 0., 1., 0.]])
- >>> binarizer = preprocessing.Binarizer(threshold=1.1) # 设定阈值为1.1
- >>> binarizer.transform(X)
- array([[ 0., 0., 1.],
- [ 1., 0., 0.],
- [ 0., 0., 0.]])
(4)标签预处理(Label preprocessing)
4.1)标签二值化(Label binarization)
LabelBinarizer通常用于通过一个多类标签(label)列表,创建一个label指示器矩阵
- >>> lb = preprocessing.LabelBinarizer()
- >>> lb.fit([1, 2, 6, 4, 2])
- LabelBinarizer(neg_label=0, pos_label=1)
- >>> lb.classes_
- array([1, 2, 4, 6])
- >>> lb.transform([1, 6])
- array([[1, 0, 0, 0],
- [0, 0, 0, 1]])
上例中每个实例中只有一个标签(label),LabelBinarizer也支持每个实例数据显示多个标签:
- >>> lb.fit_transform([(1, 2), (3,)]) #(1,2)实例中就包含两个label
- array([[1, 1, 0],
- [0, 0, 1]])
- >>> lb.classes_
- array([1, 2, 3])
4.2)标签编码(Label encoding)
- >>> from sklearn import preprocessing
- >>> le = preprocessing.LabelEncoder()
- >>> le.fit([1, 2, 2, 6])
- LabelEncoder()
- >>> le.classes_
- array([1, 2, 6])
- >>> le.transform([1, 1, 2, 6])
- array([0, 0, 1, 2])
- >>> le.inverse_transform([0, 0, 1, 2])
- array([1, 1, 2, 6])
也可以用于非数值类型的标签到数值类型标签的转化:
- >>> le = preprocessing.LabelEncoder()
- >>> le.fit(["paris", "paris", "tokyo", "amsterdam"])
- LabelEncoder()
- >>> list(le.classes_)
- ['amsterdam', 'paris', 'tokyo']
- >>> le.transform(["tokyo", "tokyo", "paris"])
- array([2, 2, 1])
- >>> list(le.inverse_transform([2, 2, 1]))
- ['tokyo', 'tokyo', 'paris']
1 0
- sklearn学习记录二:数据预处理
- Sklearn学习(二)——数据预处理(Normalization)
- 机器学习-->sklearn数据预处理
- sklearn数据预处理类库学习
- 机器学习-sklearn模块数据预处理
- sklearn数据预处理
- sklearn-数据预处理
- sklearn中的数据预处理
- 数据预处理-sklearn实战
- 机器学习中的数据预处理(sklearn preprocessing)
- 『sklearn学习』preprocessing函数——数据预处理
- 机器学习中的数据预处理中的标准化(sklearn preprocessing)
- 机器学习中的数据预处理(sklearn preprocessing)
- 机器学习sklearn—数据的特征预处理
- Preprocessing data-sklearn数据预处理
- sklearn-数据预处理-特征变换
- matlab、sklearn 中的数据预处理
- 【sklearn】数据预处理(一)
- uIP学习笔记
- Linux下MySQL5.6源码安装
- Help Jimmy(POJ No.1661) 动态规划
- pb常用代码
- 浅谈java中类型转换
- sklearn学习记录二:数据预处理
- Windows安装MongoDB
- Linux Ubuntu学习笔记_终端
- 角色的转换
- 弹出对话框--AlertDialog
- Linux下Oracle 11G静默安装
- 泛型
- tr命令
- sklearn学习记录三:cross-validation