当前位置: 首页 > news >正文

Machine Learning 初探

前置知识

pandas

  • 读取文件:read_csv
  • 查看信息
    • describe:查看整体信息,包括每列的平均值、最大最小值、标准差等
    • head:输出头部几行数据
    • columns:输出所有列名
    • loc:查询数据,或是根据索引取对应的数据
    • dropna:去掉所有为空NA的数据

Machine Learning

大体上来说,机器学习就是给定一部分数据,让机器去“学习”这部分有什么特征,每个特征上有什么规律,以此形成一个模型model,然后用这个model去预测新的数据的结果

scikit-learn

简单高效的python包,可用于可预测的数据分析,官网在这里,可以自行查阅相关模型的原理或是API
下面以决策树模型的使用过程来大致展示一下机器学习的整体过程

决策树:DecisionTree

非常简单易懂的监督模型,可理解为给定一系列相关特征(比如n个),每个特征的结果只有两个(不确定是不是只能有两个),整个决策树就像是二叉树,预测时根据每个特征的是或否的回答选择路径,一次决策就像是二叉树从根节点到某个叶子节点的一条路径
可用于classification(DecisionTreeClassifier)或是regression(DecisionTreeRegressor)

训练模型的整体流程:以回归模型为例

  1. 准备数据:用pandas读取数据,并挑选出所需要的特征列和想预测的目标列
    • 数据分离train_test_split:注意不要把所有数据都拿来用于训练,要从中选出一部分数据用于验证训练出来的模型是否可信
    import pandas as pd
    from sklearn.model_selection import train_test_split
    src_data = pd.read_csv('...')
    features = ['column_1', ...]
    X = src_data[features]		# 特征列
    y = src_data.target_column	# 目标列
    train_X, val_X, train_y, val_y = train_test_split(X, y, random_state = 0)
    
  2. 初始化模型:直接导入后创建即可
    • 可指定随机数种子random_state,相同的值能保证每次运行脚本时得到相同的结果
    from sklearn.tree import DecisionTreeRegressor
    ...
    dt_model = DecisionTreeRegressor(random_state=N)
    
  3. 数据拟合fit:用训练数据去训练模型
  4. 预测结果predict:用检验数据进行预测
    predicted_data = model.predict(val_X)		# val_X: validation data
    
  5. 评估结果:检验预测的结果与实际结果之间的差距,可以有不同的方法,在此仅介绍一种MAE

评估结果:mean_absolute_error(MAE)

计算方式为:依次计算预测结果与实际结果的差值的绝对值,最后求和后除以结果数量
即与实际结果间的平均差值

On average, our predictions are off by about X.

代码也很简单,导入后调用即可

from sklearn.metrics import mean_absolute_error

mean_absolute_error(y, predicted_data)	// y: validation data's actual result

两个问题

  • 过拟合 overfitting:与训练数据贴合得过于完美,可能会学到一些实际数据中并不存在的特性,导致预测结果与实际数据相差较大(就像是下图竖线的右边部分,训练数据上的评估结果很好但实际表现不好)
  • 欠拟合 underfitting:与训练数据贴合得不够,可能是特征学习得不足,导致不能很好地判定实际数据的特征,所以预测结果与实际数据相差也很大(就像下图竖线的左边部分,在两个数据集上的表现都不好)
  • 寻找最佳点:可通过梯度测试等方式,不断调试参数,找到能让在实际数据上的表现最好的参数

MAE中拟合预见的两个情况

决策树的改进

  1. 控制树高:创建模型的时候可以通过max_leaf_node指定叶子个数限制,或是max_depth指定最大深度。那么经过测试不同叶子限制或是树高的情况下MAE的值,选取使其到达最低点的参数进行创建模型,就能达到最佳效果
  2. 使用更复杂的模型(比如随机森林RandomForestRegressor
    from sklearn.ensemble import RandomForestRegressor
    

相关文章:

  • Python使用总结之Python文本转语音引擎:pyttsx3完全指南
  • nio使用
  • 编写一个程序,输入一个数字并输出其阶乘(Python版)
  • Wireshark 插件开发实战指南
  • P1706 全排列问题(DFS)
  • 今日行情明日机会——20250228
  • 巧用 Python 负数步长实现列表反转
  • Pany-v2:LFI漏洞探测与敏感文件(私钥窃取/其他)自动探测工具
  • 深度学习笔记17-马铃薯病害识别(VGG-16复现)
  • 【GESP】C++二级真题 luogu-B4037 [GESP202409 二级] 小杨的 N 字矩阵
  • 科普:ROC AUC与PR AUC
  • 性能测试测试策略制定|知名软件测评机构经验分享
  • Python的rasterio库
  • 单片机开发为什么不用C++?
  • TCP/IP 5层协议簇:网络层(IP数据包的格式、路由器原理)
  • SpringBoot缓存实践
  • 【Nginx 】Nginx 部署前端 vue 项目
  • Go语言学习笔记(五)
  • 说一下接口测试流程有哪些?
  • 深入理解 Python 中的特殊方法和运算符重载
  • 陕西有没有做网站好的公司/360收录入口
  • 企业网站开发课程的能力应用/青岛的seo服务公司
  • wordpress密码无法重置/金华关键词优化平台
  • 天津营销网站建设公司哪家好/qq引流推广软件哪个好
  • 做好网站建设工作/百度seo优化包含哪几项
  • 网站建设项目中标通知/长沙有实力的关键词优化价格