05_机器学习开发流程

Posted hp-lake

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了05_机器学习开发流程相关的知识,希望对你有一定的参考价值。

05 机器学习开发流程

数据类型

离散型数据

  • 定义:记录不同类别个体的数目得到的数据,又称计数数据。这些数据全是整数,且不能再细分,也不能进一步提高他们的精度。
  • 如:3.6个人

连续型数据:

  • 定义:变量可以在某个范围内取任一整数,即变量的取值可以是连续的,如,长度、时间、质量值等,通常含有小数部分。

注: 离散型式区间内不可分,连续型是区间内可分。

机器学习算法分类

监督学习

  • 特征值 + 目标值

分类 (离散型)

- K-近邻算法
- 贝叶斯分类
- 决策树与随机森林
- 逻辑回归
- 神经网络

回归 (连续型)

- 线性回归
- 岭回归

标注

- 隐马尔可夫模型 (不做要求)

无监督学习

聚类

- k-means

开发流程

数据源

  1. 公司的数据
  2. 合作的数据
  3. 购买的数据

开发方法

  1. 建立模型:根据数据类型划分应用种类
  2. 数据的基本处理:pd (缺失值,合并表...)
  3. 特征工程 (对特征进行处理)
  4. 找到合适的算法进行预测
    • 分类
    • 回归
  5. 模型评估,判定结果 (模型:算法+数据)
    • 换算法
    • 调参数
    • 特征工程数据处理
  6. 上线使用

数据的划分和介绍

Sklearn 数据集

  1. 数据集的划分
  • 训练数据:用于训练,构建模型 (75%)
  • 测试数据:在模型检验时使用,用于评估模型是否有效 (25%)
  1. sklearn 数据集划分API
  • sklearn.model_selection.train_test_split
    • x : 数据的特征值
    • y : 数据集的标签值
    • test_size : 测试集的大小
    • random-state : 随机数种子,相同种子的采样结果相同
  1. sklearn 数据集API介绍 (sklearn.datasets)
  • 加载获取流行数据集,小规模数据集,数据包含在datasets里
    datasets.load_*()

  • 获取大规模数据集,需要从网络上下载
    datasets.fetch_*(data_home=None)
    技术图片

  1. 用于分类的大数据集
    sklearn.datasets.fetch_20newsgroups(data_home=None, subset=‘train‘)
    subset: ‘train‘, ‘test‘, ‘all‘ - 选择要加载的数据集

datasets.clear_data_home(data_home=None) 清楚目录下的数据

from sklearn.datasets import load_iris, fetch_20newsgroups
from sklearn.model_selection import train_test_split

li = load_iris()
# print(li.data)   # 特征
# print(li.target)  # 标签
# print(li.DESCR)
# print(li.feature_names)
# print(li.target_names)

# 注意返回值的顺序
# 训练集 train :x_train,y_train, 测试集 test: x_test, y_test
x_train, x_test, y_train, y_test = train_test_split(li.data, li.target, train_size=0.75)

print(x_train)
print('*' * 50)
print(x_test)
print(y_train)
print(y_test)

news = fetch_20newsgroups(subset='all')
print(news.data)
print(news.target)

转换器与估计器

转换器 (Trransformer)

  1. fit_transform() : 输入数据直接转换
  2. fit(): 输入数据,没有输出,计算平均值,方差等
  3. transfrom(): 进行数据的转换
>>> from sklearn.preprocessing import StandardScaler
>>> s = StandardScaler()
>>> s.fit_transform([[1,2,3],[4,5,6]])
>>> array([[-1., -1., -1.],
       [ 1.,  1.,  1.]])

>>> sa = StandardScaler()
>>> sa.fit([[2,3,4],[9,9,9]])
>>> StandardScaler(copy=True, with_mean=True, with_std=True)
>>> sa.transform([[1,2,3],[4,5,6]])  # 使用fit()中计算好的平均值,方差来计算
>>> array([[-1.28571429, -1.33333333, -1.4       ],
       [-0.42857143, -0.33333333, -0.2       ]])

注: 正常使用是,优先使用fit_transform(), 单独使用时,transform() 会使用fit() 中计算好的值来计算输入到transform中的值.

估计器(Estimator)

  1. 定义:是一类实现了算法的API
  2. 分类估计器:
    • sklearn.neighbors k-近邻算法
    • sklearn.naive_bayes 贝叶斯
    • sklearn.linear_model.LogisticRegression 逻辑回归
    • sklearn.tree 决策树与随机森林
  3. 回归估计器
    • sklearn.linear_model.LinearRegression 线性回归
    • sklearn.linear_model.Ridge 岭回归
  4. Estimator 使用流程
    1. 调用fit(x_train, y_train)
    2. 输入与测试集的数据
      • y_predict = predict(x_test)
      • 预测准确率: score(x_test, y_test)

以上是关于05_机器学习开发流程的主要内容,如果未能解决你的问题,请参考以下文章

python 机器学习有用的代码片段

1_机器学习概述—全流程

机器学习3_EM算法与混合高斯模型

08-05 细分构建机器学习应用程序的流程-数据预处理

用pickle加速sklearn/机器学习的分类任务?

机器学习-4.开发流程算法基本认知