sklearn库的学习

参考

python机器学习笔记:sklearn库的学习
https://www.cnblogs.com/wj-1314/p/10179741.html

正则化 normalize

  • L2范数正则化
  • 原来的L2范数:对每个样本(每行)求平方和再开方
  • 每个数据除以原来的L2范数,可以保证每一个样本(每一行)新数据的L2范数都是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]])
>>> 0.40824829**2 + (-0.40824829)**2 + 0.81649658**2
0.9999999977275447
>>> 1+1+4
6
>>> 1/6
0.16666666666666666
>>> 1/np.sqrt(6)
0.4082482904638631

one-hot 编码

  • 特征之间的距离计算 更加合理。
  • sklearn.preprocessing.OneHotEncoder()
  • 该函数可以帮助自动确定每个属性的取值范围
    如属性A的取值有‘0,1’,则1 可以表示为01,
    如属性B的取值有‘0,1,2’,则 1 可以表示为010,
    结果就是连接后的01_010
  • 示例
    四个样本,属性A可以取[0,1],属性B可以取[0,1,2],属性C可以取[0,1,2,3]
    index based on 0,样本[0, 0, 3] 就表示为10_100_0001
>>> data = [[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]]
>>> encoder = preprocessing.OneHotEncoder().fit(data)
encoder.transform(data).toarray()
array([[1., 0., 1., 0., 0., 0., 0., 0., 1.],
       [0., 1., 0., 1., 0., 1., 0., 0., 0.],
       [1., 0., 0., 0., 1., 0., 1., 0., 0.],
       [0., 1., 1., 0., 0., 0., 0., 1., 0.]])
posted @ 2021-04-19 10:50  boyang987  阅读(55)  评论(0编辑  收藏  举报