机器学习流程示例(鸢尾花实例)
发布时间:2026/9/7 20:04:34 作者:尧图编辑部 阅读量:1,286
)
机器学习的基本步骤流程:1.数据获取2.数据基本处理3.特征工程4.模型训练5.模型评估鸢尾花数据集的机器学习整体流程1.用sklearn获取数据集(数据集获取)1.获取数据集sklearn.datasets1.小数据集sklearn.datasets.load_*()从本地获取2.大数据集sklearn.datasets.fetch_*()从网上下载subset--表示获取的数据集类型(train/test/all)默认下载训练数据集(train)2.数据集返回值返回类型为bunch--字典类型返回值属性:data:特征数据数组target:目标数组feature_names: 特征名target_names: 目标名DESCR: 数据集介绍3.数据可视化import seaborn as snssns.Implot()参数:x, y--具体x/y轴索引值(列名)data--数据集的具体数据hue--目标值(列名)fit_reg--是否进行线性拟合, 默认为True, 英文全称fit regression2.数据集拆分(数据基本处理)api:from sklearn.model_selection import train_test_split()参数:x--特征值数据y--目标值数据test_size-测试集所占比例(0.2-0.3为宜)random_state--产生随机数种子, 确保每次划分的结果一致返回值有四个,顺序为:1.训练集特征值 x_train2.测试集特征值 x_test3.训练集目标值 y_train4.测试集目标值 y_test3.特征预处理(特征工程)1.定义通过一些转换函数将特征数据转换成更适合算法模型的特征数据过程2.内容2.1.归一化定义:对原始数据进行变换把数据映射到特定区间内(默认[0,1])api:sklearn.proprocessing.MinMaxScaler()参数:默认feature_range(0,1)总结:鲁棒性较差(全称:robustness, 就是稳定性较差, 容易收到异常点影响)因此, 适合传统精确小数据场景(了解即可, 基本用不到)2.2.标准化定义:将原始数据变换为均值为0, 标准差为1, 即标准正态分布的情况API:sklearn.proprocessing.StandardScaler()总结:相比于归一法, 异常值影响较小3.调用接口(API)sklearn.proprocessing4.K近邻算法(模型训练模型评估)1.简介根据距离最近的n个邻居来判断属于哪一类2.api:python包: Scikit-Learnsklearn.neighbors.KNeighborsClassifier参数:k_neighbors: 选择邻居数, 默认为5algorithm: (auto,ball_tree,kd_tree,brute)auto:默认自动选择合适算法ball_tree:特征值维度20, 查找效率更高kd_tree:特征值维度20, 查找效率更高brute:数据集很简单时, 使用brute3.距离度量1.闵可夫斯基距离:欧式距离d Qrt((x1-x2)2(y1-y2)2, 2)曼哈顿距离(Manhattan Distance)d |x1-x2||y1-y2|切比雪夫(Chebyshev Distance)d max(|x1-x2|, |y1-y2|)缺点:1.把各个分量单位相同看待2.没有考虑各个分量分布不同的情况改进:标准化(欧式标准化公式)2.余弦距离公式(Cosine Distance)3.汉明距离(Hanming Distance)字符串变换的最小替换次数4.杰卡德距离(Jaccard Distance)J(A, B), 通过交并集进行统计5.马氏距离(Mahalanobis Distance)基于样本分布的距离4.k值的选择k值过小: 模型复杂, 容易过拟合, 受异常点影响大k值过大: 模型简单, 容易欠拟合, 受样本均衡的影响当Kn(n为训练集样本个数), 模型不足取, 过于简单, 仅能预测为属于样本最多那一类jupyter常用快捷键:1.查看函数参数:将光标放在函数名或参数后面,按住ShiftTab键会弹出函数帮助文档窗口。