11.15 机器学习-集成学习方法-随机森林

机器学习中有一种大类叫**集成学习**(Ensemble Learning),集成学习的基本思想就是将多个分类器组合,从而实现一个预测效果更好的集成分类器。集成算法可以说从一方面验证了中国的一句老话:

三个臭皮匠,赛过诸葛亮。集成算法大致可以分为:Bagging,Boosting 和 Stacking 三大类型。

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

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

(3)对于分类问题,采用投票的方法,得票最多子模型的分类类别为最终的类别;

就是把多个分类器组合起来用 每个分类器都从训练集里面拿一部分(有放回的) 数据进行训练 最后得到了很多个模型组成的一个集成模型 各个模型拿的数据集可能有重合部分

# 行和列 都会随机选 数据个数和特征个数 关注点不一样

然后 传入一个数据拿去预测 集成模型里面的每个子模型都会给一个结果 然后看结果最多的那个当做数据的结果

**随机森林**就属于集成学习,是通过构建一个包含多个决策树(通常称为基学习器或弱学习器)的森林,每棵树都在不同的数据子集和特征子集上进行训练,

最终通过投票或平均预测结果来产生更准确和稳健的预测。这种方法不仅提高了预测精度,也降低了过拟合风险,并且能够处理高维度和大规模数据集

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

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

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

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

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

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

不需要降维 因为已经特征选择随机了

API

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 树的最大深度。

from sklearn.ensemble import RandomForestClassifier

from sklearn.datasets import load_iris

from sklearn.feature_extraction import DictVectorizer

from sklearn.feature_selection import VarianceThreshold

from sklearn.model_selection import train_test_split

from sklearn.preprocessing import StandardScaler

import pandas as pd

import numpy as np

def random_forest1():

df1=pd.read_csv("assets/csv/titanic.csv")

df1["age"].fillna(df1["age"].mode()[0],inplace=True)

x=df1.drop(["embarked","home.dest","room","ticket","boat","survived"],axis=1)

y=df1["survived"]

y=y.to_numpy()

print(x)

print(y)

x=x.to_dict(orient="records") # df转字典 字典进行字典的那个处理

vector1=DictVectorizer(sparse=False)

x=vector1.fit_transform(x)

x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=666,train_size=0.8)

scaler1=StandardScaler()

x_train_stand=scaler1.fit_transform(x_train)

x_test_stand=scaler1.transform(x_test)

forest1=RandomForestClassifier(n_estimators=100,criterion="gini",max_depth=3)

model1=forest1.fit(x_train_stand,y_train)

score1=model1.score(x_test_stand,y_test)

print(score1)

pass

if name=="main":

random_forest1()

pass

相关推荐
你觉得20515 小时前
哈尔滨工业大学DeepSeek公开课:探索大模型原理、技术与应用从GPT到DeepSeek|附视频与讲义下载方法
大数据·人工智能·python·gpt·学习·机器学习·aigc
向上的车轮17 小时前
NOA是什么?国内自动驾驶技术的现状是怎么样的?
人工智能·机器学习·自动驾驶
你觉得20518 小时前
浙江大学朱霖潮研究员:《人工智能重塑科学与工程研究》以蛋白质结构预测为例|附PPT下载方法
大数据·人工智能·机器学习·ai·云计算·aigc·powerpoint
人工干智能19 小时前
科普:One-Class SVM和SVDD
人工智能·机器学习·支持向量机
MPCTHU19 小时前
预测分析(三):基于机器学习的分类预测
人工智能·机器学习·分类
_一条咸鱼_19 小时前
LangChain 入门到精通
机器学习
3DVisionary20 小时前
3D-DIC与机器学习协同模拟材料应力-应变本构行为研究
人工智能·机器学习·3d·3d-dic技术 机器学习·应力-应变本构行为·卷积神经网络(ecnn)·数字图像相关法(dic)
神经星星20 小时前
无需预对齐即可消除批次效应,东京大学团队开发深度学习框架STAIG,揭示肿瘤微环境中的详细基因信息
人工智能·深度学习·机器学习
神经星星20 小时前
【vLLM 学习】调试技巧
人工智能·机器学习·编程语言
呵呵哒( ̄▽ ̄)"20 小时前
线性代数:同解(1)
python·线性代数·机器学习