机器学习之机器学习库scikit-learn

本文介绍了如何使用scikit-learn加载数据集、处理缺失值和特征归一化,强调了数据预处理的重要性。此外,还讨论了模型训练、交叉验证的概念,并通过例子展示了交叉验证在调整模型超参数中的作用。最后,探讨了过拟合和欠拟合的问题及其识别方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、 加载sklearn中的数据集datasets

from sklearn import datasets

iris = datasets.load_iris() # 鸢尾花卉数据
digits = datasets.load_digits() # 手写数字8x8像素信息数据
  • 查看数据的信息
print iris.data[:4] # 查看数据的特征信息
print iris.data.shape # 查看数据的特征信息维度

print iris.target_names # 查看标签对应的文本
print iris.target[:4] # 查看数据的标签 setosa:0 ...
    [[ 5.1  3.5  1.4  0.2]
     [ 4.9  3.   1.4  0.2]
     [ 4.7  3.2  1.3  0.2]
     [ 4.6  3.1  1.5  0.2]]
    (150L, 4L)
    ['setosa' 'versicolor' 'virginica']
    [0 0 0 0]
print digits.data.shape
print digits.target[0]
print digits.data[0].reshape((8,8)) # 重塑成8x8的像素数组
    (1797L, 64L)
    0
    [[  0.   0.   5.  13.   9.   1.   0.   0.]
     [  0.   0.  13.  15.  10.  15.   5.   0.]
     [  0.   3.  15.   2.   0.  11.   8.   0.]
     [  0.   4.  12.   0.   0.   8.   8.   0.]
     [  0.   5.   8.   0.   0.   9.   8.   0.]
     [  0.   4.  11.   0.   1.  12.   7.   0.]
     [  0.   2.  14.   5.  10.  12.   0.   0.]
     [  0.   0.   6.  13.  10.   0.   0.   0.]]

二、训练集和分割集的分割

from sklearn.model_selection import train_test_split

X = digits.data # 特征矩阵
y = digits.target # 标签向量

# 随机分割训练集和测试集:
# test_size:设置测试集的比例。random_state:可理解为种子,保证随机唯一
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=1/3., random_state=8) 
print X_train.shape
print X_test.shape
(1198L, 64L)
(599L, 64L)

三、数据预处理

1. 缺失值处理

from sklearn.preprocessing import Imputer
x = np.array([[ 1, 2 , 0],
             [0, np.NaN,0],
             [0, 0, 1]]);
imputer = Imputer(missing_values='NaN',strategy='mean',axis=0,copy=False)
imputer.fit_transform(x[:,1])
array([[ 1.,  2.,  0.],
       [ 0.,  1.,  0.],
       [ 0.,  0.,  1.]])

2. 特征值的归一化

归一化的好处:

  • 当特征的数值范围差距较大时,需要对特征的数值进行标准化,防止某些特征的权重过大,让每个特征的地位相对平等,对结果做出的贡献相同。一般对连续性特征值处理。

  • 提升模型的收敛速度(梯度下降)。

from sklearn import preprocessing
import numpy as np

X = np.array([[1., -1., 2.],
              [2., 0., 0.],
              [0., 1., -1.]])


# 对每一列特征的数值归一化(均值为0,方差为1)
print preprocessing.scale(X)
array([[ 0.        , -1.22474487,  1.33630621],
       [ 1.22474487,  0.        , -0.26726124],
       [-1.22474487,  1.22474487, -1.06904497]])
  • 使用StandardScaler对象进行归一化

    StandardScaler对象可以保存训练集中的参数(均值、方差),之后可以直接使用其对象转换测试集数据。

from sklearn.preprocessing import StandardScaler # 对数据标准
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值