机器学习基础05

目录

1.随机森林

1.1随机森林的介绍

1.2算法原理

1.3API

2.线性回归

2.1回归的含义

2.2线性回归

2.3损失函数

2.4多参数回归

2.5最小二乘法MSE

2.6API


1.随机森林

集成学习的基本思想就是将多个分类器组合,从而实现一个预测效果更好的集成分类器。

集成算法大致可以分为:Bagging,Boosting 和 Stacking 

(1)每次有放回地从训练集中取出 n 个训练样本,组成新的训练集;

(2)利用新的训练集,训练得到M个子模型;

(3)对于分类问题,M个子模型进行投票,得票最多类别作为最终的类别;

1.1随机森林的介绍

属于集成学习,是通过构建一个包含多个决策树(通常称为基学习器或弱学习器)的森林,每棵树都在不同的数据子集和特征子集上进行训练,最终通过投票或平均预测结果来产生更准确和稳健的预测。这种方法不仅提高了预测精度,也降低了过拟合风险,并且能够处理高维度和大规模数据集

1.2算法原理

  • 随机: 特征随机,训练集随机

    • 样本:对于一个总体训练集T,T中共有N个样本,每次有放回地随机选择n个样本。用这n个样本来训练一个决策树。

    • 特征:假设训练集的特征个数为d,每次仅选择k(k<d)个来构建决策树。

  • 森林: 多个决策树分类器构成的分类器, 因为随机,所以可以生成多个决策树

  • 处理具有高维特征的输入样本,而且不需要降维

  • 使用平均或者投票来提高预测精度和控制过拟合

1.3API

class sklearn.ensemble.RandomForestClassifier

参数:

  • n_estimators :   

        int, default=100
        森林中树木的数量。(决策树个数)

  • criterion:    

        {“gini”, “entropy”}, default=”gini” 决策树属性划分算法选择
        当criterion取值为“gini”时采用 基尼不纯度(Gini impurity)算法构造决策树,
        当criterion取值为 “entropy” 时采用信息增益( information gain)算法构造决策树.

  • max_depth    

        int, default=None 树的最大深度。 

import pandas as pd
from sklearn.model_selection import train_test_split,GridSearchCV
from sklearn.ensemble import RandomForestClassifier
from sklearn.preprocessing import StandardScaler
from sklearn.feature_extraction import DictVectorizer
from sklearn.decomposition import PCA
import joblib# 加载数据
data = pd.read_csv('./src/titanic/titanic.csv')# 数据预处理
# x =data[['age','sex','pclass']]
y = data['survived']
x =data.drop('survived',axis=1)
# x['age'].fillna(x['age'].mode()[0],inplace=True)
x.fillna({'age': x['age'].mode()[0]}, inplace=True)
x.fillna(0,inplace=True)
x=x.to_dict(orient:='records')vec = DictVectorizer(sparse=False)
x = vec.fit_transform(x)pca = PCA(n_components=5)x_train,x_test,y_train,y_test =train_test_split(x,y,train_size =0.7,random_state=40)transfer =StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)
x_test = transfer.transform(x_test)
# print(x_train)# 构建模型
estimator = RandomForestClassifier()# 网格搜索
params_grid={'n_estimators':[120,200,300,500,800,1200],'max_depth':[5,8,15,25,30]}
grid_search = GridSearchCV(estimator,param_grid=params_grid,cv=10)# 训练模型
grid_search = grid_search.fit(x_train,y_train)# 保存模型
joblib.dump(grid_search,'./model/titanic.pkl')# 模型评估
print('最佳结果:',grid_search.best_score_)
print('最佳参数:',grid_search.best_params_)
print('最佳估计器:',grid_search.best_estimator_)
print('交叉验证结果:',grid_search.cv_results_)

2.线性回归

分类的目标变量是标称型数据,回归是对连续型的数据做出预测。

标称型数据(Nominal Data)是统计学和数据分析中的一种数据类型,它用于分类或标记不同的类别或组别,数据点之间并没有数值意义上的距离或顺序。

标称数据的特点:

  • 无序性:标称数据的各个类别之间没有固有的顺序关系。

  • 非数值性:标称数据不能进行数学运算,因为它们没有数值含义。

  • 多样性:标称数据可以有很多不同的类别,具体取决于研究的主题或数据收集的目的。

连续型数据(Continuous Data)表示在某个范围内可以取任意数值的测量,这些数据点之间有明确的数值关系和距离。例如,温度、高度、重量等

连续型数据的特点包括:

  • 可测量性:连续型数据通常来源于物理测量。

  • 无限可分性:连续型数据的取值可无限精确。

  • 数值运算:连续型数据可以进行数学运算。

连续型数据的处理和分析方式有:

  • 描述性统计:均值、中位数、众数、标准差、四分位数等,以了解数据的中心趋势和分布情况。

  • 概率分布:通过拟合概率分布模型,如正态分布、指数分布、伽玛分布等,来理解数据的随机特性。

  • 图形表示:使用直方图、密度图、箱线图、散点图等来可视化数据的分布和潜在的模式。

  • 回归分析:建立连续型变量之间的数学关系,预测一个或多个自变量如何影响因变量。

2.1回归的含义

求回归方程(regression equation)的回归系数的过程就是回归

2.2线性回归

回归,一般指线性回归(linear regression)。

线性回归是机器学习中一种有监督学习的算法。

回归问题主要关注的是因变量(需要预测的值)和一个或多个数值型的自变量(预测变量)之间的关系

(1)需要预测的值:即(目标变量,target,y)

(2)影响目标变量的因素:(x,data),可以是连续值也可以是离散值

(3)因变量和自变量之间的关系:即(模型,model)

2.3损失函数

均方差:

每个实际点到线的竖直方向的距离平方 求和。在平均最小时这条直线就是最优的拟合情况。

2.4多参数回归

在实际情况下,影响事物结果的因素往往不唯一。

求权重β

权重:即重要程度,某一项的权重越大说明它影响结果程度越大。

2.5最小二乘法MSE

方法一:

引入概念:

欧几里得范数的平方,也就是每个元素的平方相加

二次方程导数为0时最小

矩阵相关公式:

进行求导(注意X,y已知看作常数,W未知,对W求导)  

 方法二:链式求导

2.6API

 sklearn.linear_model.LinearRegression()

参数:
fit_intercept:   

        默认为True,是否计算此模型的截距(偏置)。

        如果设置为False,则在计算中将不使用截距(即,数据应中心化)。
属性:     
        coef_ :回归后的权重系数
        intercept_: 偏置

功能:

        普通最小二乘法线性回归, 权重和偏置是直接算出来的,对于数量大的不适用,因为计算量太大,计算量太大的适合使用递度下降法

import numpy as np
from sklearn.linear_model import LinearRegression# 数据准备
data=np.array([[0,14,8,0,5,-2,9,-3,399],[-4,10,6,4,-14,-2,-14,8,-144],[-1,-6,5,-12,3,-3,2,-2,30],[5,-2,3,10,5,11,4,-8,126],[-15,-15,-8,-15,7,-4,-12,2,-395],[11,-10,-2,4,3,-9,-6,7,-87],[-14,0,4,-3,5,10,13,7,422],[-3,-7,-2,-8,0,-6,-5,-9,-309]])x = data[:,:8]
y = data[:,8:]
transfer = LinearRegression(fit_intercept=False)
estimator = transfer.fit(x,y)print('权重系数:',estimator.coef_)
print('偏置:',estimator.intercept_)# 预测
y_predict = estimator.predict([[21,14,18,10,5,14,6,7]])
print('预测结果:',y_predict)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/59633.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库范式、MySQL 架构、算法与树的深入解析

一、数据库范式 在数据库设计中&#xff0c;范式是一系列规则&#xff0c;用于确保数据的组织和存储具有良好的结构、完整性以及最小化的数据冗余。如果不遵循范式设计&#xff0c;数据可能会以平铺式罗列&#xff0c;仅使用冒号、分号等简单分隔。这种方式存在诸多弊端&#…

SQL面试题——奔驰SQL面试题 车辆在不同驾驶模式下的时间

SQL面试题——奔驰SQL面试题 我们的表大致如下 CREATE TABLE signal_log( vin STRING COMMENTvehicle frame id, signal_name STRING COMMENTfunction name, signal_value STRING COMMENT signal value , ts BIGINT COMMENTevent timestamp, dt STRING COMMENTformat yyyy-mm…

Hadoop生态圈框架部署(六)- HBase完全分布式部署

文章目录 前言一、Hbase完全分布式部署&#xff08;手动部署&#xff09;1. 下载Hbase2. 上传安装包3. 解压HBase安装包4. 配置HBase配置文件4.1 修改hbase-env.sh配置文件4.2 修改hbase-site.xml配置文件4.3 修改regionservers配置文件4.4 删除hbase中slf4j-reload4j-1.7.33.j…

YOLOv11改进,YOLOv11添加GnConv递归门控卷积,二次创新C3k2结构

摘要 视觉 Transformer 在多种任务中取得了显著的成功,这得益于基于点积自注意力的新空间建模机制。视觉 Transformer 中的关键因素——即输入自适应、长距离和高阶空间交互——也可以通过卷积框架高效实现。作者提出了递归门控卷积(Recursive Gated Convolution,简称 gnCo…

Queuing 表(buffer表)的优化实践 | OceanBase 性能优化实践

案例问题描述 该案例来自一个金融行业客户的问题&#xff1a;他们发现某个应用对一个数据量相对较小的表&#xff08;仅包含数千条记录&#xff09;访问时&#xff0c;频繁遇到性能下降的情况。为解决此问题&#xff0c;客户向我们求助进行分析。我们发现这张表有频繁的批量插…

CentOS 8 安装 chronyd 服务

操作场景 目前原生 CentOS 8 不支持安装 ntp 服务&#xff0c;因此会发生时间不准的问题&#xff0c;需使用 chronyd 来调整时间服务。CentOS 8以及 TencentOS 3.1及以上版本的实例都使用 chronyd 服务实现时钟同步。本文介绍了如何在 CentOS 8 操作系统的腾讯云服务器上安装并…

AI大模型(二):AI编程实践

一、软件安装 1. 安装 Visual Studio Code VSCode官方下载&#xff1a;Visual Studio Code - Code Editing. Redefined 根据自己的电脑系统选择相应的版本下载 安装完成&#xff01; 2. 安装Tongyi Lingma 打开VSCode&#xff0c;点击左侧菜单栏【extensions】&#xff0c;…

Win10/11 安装使用 Neo4j Community Edition

如果你下载的是 Neo4j Community Edition 的压缩包&#xff0c;意味着你需要手动解压并配置 Neo4j。以下是详细的使用步骤&#xff1a; 0. 下载压缩包 访问Neo4j官网&#xff0c;找到 Community Edition 版本并选择 4.x 或者 5.x 下载&#xff1a;https://neo4j.com/deployme…

使用json配置动态区间及动态执行公式

背景 有时候可能线上一直需要调整公式或者区间以及参数等等&#xff0c;如果使用代码方式&#xff0c;将会变得比较麻烦&#xff0c;可以在redis或者数据库配置一份动态配置&#xff0c;让代码进行解析并执行&#xff0c;可以对公式以及参数等进行动态调节 需求 x 是估值&…

腾讯地图GL JS点标识监听:无dragend事件的经纬度获取方案

引入腾讯地图SDK <!--腾讯地图 API--><script charset"utf-8" src"https://map.qq.com/api/gljs?librariestools&v1.exp&key***"></script>构建地图容器 <div class"layui-card"><div class"layui-car…

Tiktok对接和内容发布申请流程

这段时间在搞AI生成视频&#xff0c;希望用户能一键发布到Tiktok&#xff0c;因此研究了一下Tiktok的开发者申请流程&#xff0c;发现好复杂&#xff0c;同时也发现Tiktok的开发也跟我一样&#xff0c;挺草台班子的 0、流程简述 废话不多说&#xff0c;Tiktok的开发者申请和…

企业生产环境-麒麟V10(ARM架构)操作系统部署kafka高可用集群

前言&#xff1a;Apache Kafka是一个分布式流处理平台&#xff0c;由LinkedIn开发并捐赠给Apache软件基金会。它主要用于构建实时数据流管道和流应用。Kafka具有高吞吐量、可扩展性和容错性的特点&#xff0c;适用于处理大量数据。 以下是Kafka的一些核心概念和特性&#xff1…

xcode-select: error: tool ‘xcodebuild‘ requires Xcode, but active developer

打开 .sh 文件所在的终端窗口&#xff0c;执行终端命令&#xff1a;sh 文件名.sh&#xff0c;出现如下错误&#xff1a; 解决办法&#xff1a;

CC6学习记录

&#x1f338; cc6 cc6和cc1的国外链其实后半条链子是一样的&#xff0c;但是cc6的不局限于jdk的版本和commons-collections的版本。 回忆一下cc1的后半条链子&#xff1a; LazyMap.get()->InvokerTransformer.transform() 这里我们就结合了URLDNS链的思路&#xff0c;在…

嵌入式硬件实战基础篇(一)-STM32+DAC0832 可调信号发生器-产生方波-三角波-正弦波

引言&#xff1a;本内容主要用作于学习巩固嵌入式硬件内容知识&#xff0c;用于想提升下述能力&#xff0c;针对学习STM32与DAC0832产生波形以及波形转换&#xff0c;对于硬件的降压和对于前面硬件篇的实际运用&#xff0c;针对仿真的使用&#xff0c;具体如下&#xff1a; 设…

网络安全练习之 ctfshow_web

文章目录 VIP题目限免&#xff08;即&#xff1a;信息泄露题&#xff09;源码泄露前台JS绕过协议头信息泄露robots后台泄露phps源码泄露源码压缩包泄露版本控制泄露源码(git)版本控制泄露源码2(svn)vim临时文件泄露cookie泄露域名txt记录泄露敏感信息公布内部技术文档泄露编辑器…

ReactPress与WordPress:一场内容管理系统的较量

ReactPress Github项目地址&#xff1a;https://github.com/fecommunity/reactpress WordPress官网&#xff1a;https://wordpress.org/ ReactPress与WordPress&#xff1a;一场内容管理系统的较量 在当今数字化时代&#xff0c;内容管理系统&#xff08;CMS&#xff09;已成为…

IDEA调整警告级别【IntelliJ IDEA 2024.2.0.1】

文章目录 目前现状鼠标悬停&#xff0c;选择配置筛选 > 取消选择OK效果 目前现状 需要把提示改成只要显示error的5个 鼠标悬停&#xff0c;选择配置 筛选 > 取消选择 OK 效果

Vue3 + Vite 构建组件库的整体流程

Vue3 Vite 构建组件库的流程 本文教你如何用 Vue Vite&#xff0c;一步一步构建一个组件库并发布到 npm 的整体流程 1. 通过 vite 命令创建一个基本的项目结构&#xff08;这里选用 vue ts 的项目&#xff09; npm create vitelatest2. 在项目中创建一个 lib 目录&#xf…

游戏引擎学习第10天

视频参考:https://www.bilibili.com/video/BV1LyU3YpEam/ 介绍intel architecture reference manual 地址:https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html RDTS&#xff08;读取时间戳计数器&#xff09;指令是 x86/x86_64 架构中的…