机器学习中对数据集进行拆分及模型训练

对数据集的处理

经过预处理后得到:
  • 特征集X
  • 目标集Y
将特征集拆分;
  • 一般来说机器学习的数据集都会被划分成三个个子集:训练集,验证集和测试集;
  • 我们拿到的数据集通常都是由人工或者半自动化的方式收集来的,每个输入数据都有对应的输出,机器学习要做的是学习这些已经收集好的数据中所包含的信息,并且在新的输入数据出现时成功预测到输出;
    • 训练集是用来训练模型的,给模型输入和对应的输出,让模型学习它们之间的关系;
    • 验证集是用来估计模型的训练水平。根据验证集的表现来选择最好的模型;
    • 测试集是训练好的模型在模拟的“新”输入数据上得到的输出。测试集只能在最后用于测试模型的性能,不能拿来训练。用于评价模型泛化能力的强弱;
  • 比较常见的划分数据集的方式是:50%用于训练,25%用于验证,25%用于测试。这个比例也可以根据数据集的大小和数据信噪比来改变;
拆分方式

使用Scikit-learn库拆分数据集

from sklearn.model_selection import train_test_split

X_train, X_test, Y_train, X_test = train_test_split(train_data, train_target, test_size=0.4,  random_state=0)

其中:

  • train_data:所要划分的样本特征集;
  • train_target:所要划分的样本结果;
  • test_size:
    • 小数表示拆分出的测试集所占整体比例;
    • 整数表示拆分出测试集的总体数量;
  • random_state:随机数种子;
    • 表示随机数组的编号,在需要重复实 验时可以通过相同的随机数种子保证得到相同的随机数组;
    • 不传该参数时默认值为False,此时相同的切分比例下得到的结果也不同;

模型训练过程

  • 给定训练集;
  • 建立模型(模型假设)
  • 损失函数(误差函数)
    • 最优模型,即真实值和预测值之间的误差最小;
    • 从样本数据集中习得最优模型的算法,即最小化损失函数的算法称为学习算法;
梯度下降法
  • 一种迭代算法,常用于求解无约束最优化问题;
  • 算法过程:
    • 任意选取一个参数初值ω_0;
    • 不断迭代更新得到新的参数,使损失函数的函数值逐步降低;
    • 重复以上迭代过程直至两次迭代的函数值基本没有变化,此时认为损失函数(L)收敛到最小值,迭代结束;
编程中实现方法

使用Scikit-learn库中的线性回归模型;

  • sklearn.linear_model模块中的LinearRegression类
    from sklearn.linear_model import linearRegression
    
    Lr = LinearRegression()
    Lr.fit(X_train, Y_train)
    # 训练模型
    
    XY_test = X_test[:5].copy()
    XY_test["Y"] = Y_test[:5]
    XY_test["Y_predict"] = Lr.pridect(X_test[:5])
    

你可能感兴趣的:(#,Python学习笔记,python,机器学习,数据分析)