05 机器学习开发流程
数据类型
离散型数据
- 定义:记录不同类别个体的数目得到的数据,又称计数数据。这些数据全是整数,且不能再细分,也不能进一步提高他们的精度。
- 如:3.6个人
连续型数据:
- 定义:变量可以在某个范围内取任一整数,即变量的取值可以是连续的,如,长度、时间、质量值等,通常含有小数部分。
注: 离散型式区间内不可分,连续型是区间内可分。
机器学习算法分类
监督学习
- 特征值 + 目标值
分类 (离散型)
- K-近邻算法
- 贝叶斯分类
- 决策树与随机森林
- 逻辑回归
- 神经网络
回归 (连续型)
- 线性回归
- 岭回归
标注
- 隐马尔可夫模型 (不做要求)
无监督学习
聚类
- k-means
开发流程
数据源
- 公司的数据
- 合作的数据
- 购买的数据
开发方法
- 建立模型:根据数据类型划分应用种类
- 数据的基本处理:pd (缺失值,合并表...)
- 特征工程 (对特征进行处理)
- 找到合适的算法进行预测
- 分类
- 回归
- 模型评估,判定结果 (模型:算法+数据)
- 换算法
- 调参数
- 特征工程数据处理
- 上线使用
数据的划分和介绍
Sklearn 数据集
- 数据集的划分
- 训练数据:用于训练,构建模型 (75%)
- 测试数据:在模型检验时使用,用于评估模型是否有效 (25%)
- sklearn 数据集划分API
- sklearn.model_selection.train_test_split
- x : 数据的特征值
- y : 数据集的标签值
- test_size : 测试集的大小
- random-state : 随机数种子,相同种子的采样结果相同
- sklearn 数据集API介绍 (sklearn.datasets)
-
加载获取流行数据集,小规模数据集,数据包含在datasets里
datasets.load_*() -
获取大规模数据集,需要从网络上下载
datasets.fetch_*(data_home=None)
- 用于分类的大数据集
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)
- fit_transform() : 输入数据直接转换
- fit(): 输入数据,没有输出,计算平均值,方差等
- 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)
-
定义:是一类实现了算法的API
-
分类估计器:
- sklearn.neighbors k-近邻算法
- sklearn.naive_bayes 贝叶斯
- sklearn.linear_model.LogisticRegression 逻辑回归
- sklearn.tree 决策树与随机森林
-
回归估计器
- sklearn.linear_model.LinearRegression 线性回归
- sklearn.linear_model.Ridge 岭回归
-
Estimator 使用流程
- 调用fit(x_train, y_train)
- 输入与测试集的数据
- y_predict = predict(x_test)
- 预测准确率: score(x_test, y_test)