机器学习的基本概念
-
数据分析的4个层次
描述性分析(Descriptive当前的业务现状如何?)
诊断性分析(Diagnostic某些问题为什么会发生?)
预测性分析(Predictive我们的业务未来会咋样?预测分析会用到机器学习算法,帮助预
测产品的销量如何?)
规范性分析(Prescriptive我们要采取何种对策?机器学习算法可以帮助我们进行预测/规范性分析) -
机器学习能解决什么问题
- 预测分析
- 利用历史的数据, 结合统计学的知识, 发现规律
- 找到规律之后, 利用跟这个规律来预测未来
-
本阶段我们的学习重点是机器学习算法的使用
- 利用已有机器学习算法解决业务问题, 而不是去创造新算法
- 相关三方库都有算法相关实现
- 着重学习三类算法:聚类分析,回归分析,分类分析
机器学习中的数据集
- 样本 sample
- 用来训练模型的数据中, 每一行就是一个样本
- 特征 feature
- 每一列就是一个特征(除了目标之外)
- 目标 label target
- 训练模型之后, 要预测的数据列
- 特征工程(机器学习建模过程中最重要的部分) feature engineering
- 就是数据处理 用到Pandas
- 缺失值处理, 重复值处理 ,异常值处理
- 特征提取 把文本信息转换成数值信息( one-hot编码)
- 特征变换 归一化 minmaxScaler
- 特征衍生( 机器学习问题中, 特征衍生是决定最终模型效果最关键步骤)
- 原始的数据集上, 通过一些分组聚合的套路, 创建出一些新的特征列
- 特征交叉 性别 和职业 相乘
- 特征筛选 特征降维
- 把重要的特征筛选出来
- 特征处理完 就可以交给算法训练模型
数据集划分: 当数据量不是很大的前提下 7:3 ~ 8:2
- 训练集 多一些
- 测试集 少一些 工作场景下 一份测试数据只能用一次
机器学习算法分类
- 监督 有标签, 有目标
- 回归 目标值是数值,取值范围连续值
- 预测房价
- 预测下个月的销售额
- 分类 鸢尾花 三种鸢尾花
- 二分类 会不会违约 会不会点击 会不会流失
- 回归 目标值是数值,取值范围连续值
- 无监督 没有标签, 没有目标
- KMeans 聚类
- 反欺诈
机器学习工作流程
- 获取数据与基本数据处理
- 特征工程
- 模型训练
- 模型评估
模型选择
- 结合不同的算法详细介绍
过拟合/欠拟合概念
- 模型过于简单 预测的时候会出错 欠拟合
- 过拟合 模型过于复杂, 在自己训练的时候, 训练集表现好, 测试集表现差
- 训练集 测试集都可以, 但是上线之后表现差
在sklearn中KNN算法的API
from sklearn.neighbors import KNeighborsClassifier
#创建knn算法的分类器实例
knn_classifier = KNeighborsClassifier(n_neighbors=指定邻居数量)
#拟合训练数据
knn_classifier.fit(训练集特征值,训练集目标值)
#利用knn算法进行预测
y_predict = knn_classifier.predict(测试数据)
#得出预测结果
y_predict[0]
代码实现
# 导包
import numpy as np
from sklearn import datasets
# 设置忽略警告
import warnings
warnings.filterwarnings
# 加载鸢尾花数据
iris = datasets.load_iris()
# 把特征数据和目标数据传给x和y
x=iris.data
y= iris.target
# 使用SKlearn的KNeighborsClassifier进行分类预测
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
#训练集 测试集划分
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)
# 创建KNN分类器对象 近邻数为6
knn_clf = KNeighborsClassifier(n_neighbors=6)
#训练集训练模型
knn_clf.fit(x_train, y_train)
#使用训练好的模型进行预测
y_predict = knn_clf.predict(x_test)
# 计算准确率:
sum(y_predict == y_test)/len(y_test)
# 第二种计算准确率的方法
from sklearn.metrics import accuracy_scorec
# 方式一:
accuracy_score(y_test, y_predict)
# 方式二:
knn_classifier.score(x_test, y_test)