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

01_07小结

总结

所用到的机器学习类的一些总结

机器学习(监督)分两大类:分类(Classifier)、回归(Regressor)

泛化:如果一个模型能够对没见过的数据做出准确预测,我们就说它能够从训练集泛化(generalize)到测试集。

过拟合:构建一个对现有信息量来说过于复杂的模型就会出现过拟合 (overfitting)。如果你在拟合模型时过分关注训练集的细节,得到了一个在训练集上表现很好、但不能泛化到新数据上的模型,那么就存在过拟合。(简单理解:训练得分很高,测试得分较低,很有可能是过拟合)

欠拟合:选择过于简单的模型被称为欠拟合(underfitting)(简单理解:训练得分和测试得分都很低)

sklearn中算法的使用步骤

  • 数据分析,通过分析确定要用哪种算法
  • 组织数据,将数据拆分为data、target、target_name
  • 通过train_test_split将数据拆分为:训练集、测试集(默认0.75/0.25的比例,可以通过test_size修改),通过random_state设置随机种子,打乱数据
  • 实例化算法类,通过算法类的 fit 函数训练数据
  • 通过predict预测、回归
  • score计算精度(得分)
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_iris# 加载数据;可以使用pandas,加载分析后的数据(经过数据清洗)
iris = load_iris()# 通过train_test_split将数据拆分
X_train,X_test,Y_train,Y_test = train_test_split(iris.data,iris.target,random_state=42)#训练模型
knn = KNeighborsClassifier().fit(X_train,Y_train)# 模型评估 core计算精度
print("Test accuracy: {:.2f}".format(knn.score(X_test, Y_test))) 
print("Train accuracy: {:.2f}".format(knn.score(X_train, Y_train))) # 预测数据(注意 x_new,是二维数组格式[n,n_feautre])
x_new= [[5,2.8,1,0.3]]
iris_class[int(knn.predict(x_new)[0])]

学习曲线

将模型性能(训练得分、测试得分)作为数据集大小的函数进行绘图,这样的图像叫作学习曲线。通过学习曲线可以直观的看到模型的大小对训练分数的影响。

是机器学习调参的有效手段。

学习算法

k近邻

适用于小型数据集,是很好的基准模型,很容易解释。

from sklearn.neighbors import KNeighborsClassifier # 分类
from sklearn.neighbors import KNeighborsRegressor  # 回归

线性模型

常可靠的首选算法,适用于非常大的数据集,也适用于高维数据。

from sklearn.linear_model import LinearRegression # 线性回归
from sklearn.linear_model import Ridge			  # L2 正则化回归(岭回归)
from sklearn.linear_model import Lasso			  # L1 正则化回归from sklearn.linear_model import LogisticRegression # 线性分类(二分类)
from sklearn.svm import LinearSVC				    # 线性支持向量机,多分类

朴素贝叶斯

只适用于分类问题。比线性模型速度还快,适用于非常大的数据集和高维数据。精度通常要低于线性模型。

from sklearn.naive_bayes import GaussianNB   # 高斯朴素贝叶斯分类器
from sklearn.naive_bayes import BernoulliNB  # 伯努利朴素贝叶斯分类器
from sklearn.naive_bayes import MultinomialNB# 多项式朴素贝叶斯分类器

决策树

速度很快,不需要数据缩放,可以利用 tree 模块的 export_graphviz 函数来将树可视化,很容易解释。

from sklearn.tree import DecisionTreeClassifier # 分类决策树
from sklearn.tree import DecisionTreeRegressor  # 回归决策树

DecisionTreeRegressor(回归决策树)不能外推,也不能在训练数据范围之外进行预测。

随机深林

几乎总是比单棵决策树的表现要好,鲁棒性很好,非常强大。不需要数据缩放。不适用于高维稀疏数据。

from sklearn.ensemble import RandomForestClassifier

梯度提升回归树

from sklearn.ensemble import GradientBoostingClassifier

支持向量机

对于特征含义相似的中等大小的数据集很强大。需要数据缩放,对参数敏感。

from sklearn.svm import LinearSVC # 线性支持向量机
from sklearn.svm import SVC       # 支持向量机

神经网络

可以构建非常复杂的模型,特别是对于大型数据集而言。对数据缩放敏感,对参数选取敏感。大型网络需要很长的训练时间。

from sklearn.neural_network import MLPClassifier # 前馈分类神经网络
from sklearn.neural_network import MLPRegressor  # 前馈回归神经网络

面对新数据集,通常最好先从简单模型开始,比如线性模型、朴素贝叶斯或最近邻分类器,看能得到什么样的结果。对数据有了进一步了解之后,你可以考虑用于构建更复杂模型的算法,比如随机森林、梯度提升决策树、SVM 或神经网络。

相关文章:

  • queue和priority_queue及其函数
  • 【438. 找到字符串中所有字母异位词】
  • Python训练营---Day34
  • 【昇腾开发者训练营:Dify大模型部署实战】MindIE + Dify + DeepSeek + Embedding模型 + Rerank模型
  • springboot集成日志配置文件
  • 信息学奥赛及各种程序设计竞赛中常见的名词解释
  • 通过contenteditable实现仿豆包智能输入框
  • 生成模型——PixelRNN与PixelCNN
  • 常见算法题目2 - 给定一个字符串,找出其中最长的不重复子串
  • MySQL慢日志——动态开启
  • (15)关于窗体的右键菜单的学习与使用,这关系到了信号与事件 event
  • 《C 语言内存函数超详细讲解:从 memcpy 到 memcmp 的原理与实战》
  • vue——v-pre的使用
  • 安装openEuler操作系统
  • 强者的本质是什么?
  • Leetcode 2792. 计算足够大的节点数
  • mysql语句执行流程
  • Femap许可证升级说明
  • LTSPICE仿真电路:(二十九)T型反馈比例器
  • VirtualBox 4.3.10 经典版安装教程 - Windows 7/10 下载与设置指南
  • 深圳做网站开发费用/做营销型网站哪家好
  • 科技画4k纸科幻画一等奖/seo建站要求
  • 西安优惠电商平台网站/google推广及广告优缺点
  • 网站开发 工期安排/网页设计制作网站模板图片
  • 可以做网站的域名后缀/360搜索引擎入口
  • 推广app网站/正规手游代理平台有哪些