【集成学习】随机森林实现鸢尾花分类

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import ExtraTreesClassifier
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
import matplotlib as mpl
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
from sklearn.metrics import accuracy_score

mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
RF = RandomForestClassifier(n_estimators=100, n_jobs=4, oob_score=True)
iris = load_iris()
X1 = iris.data
y = iris.target
X_train, X_test, y_train, y_test = train_test_split(X1, y, test_size=0.25, random_state=0)
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
# classifier = RandomForestClassifier(n_estimators=10, criterion='entropy', random_state=0)
RF.fit(X_train, y_train)
y_pred = RF.predict(X_test)
print("随机森林准确率:", accuracy_score(y_test, y_pred))
print("其他指标:\n", classification_report(y_test, y_pred, target_names=['0', '1', '2']))
# 混淆矩阵在二分类和多分类中的使用 https://blog.csdn.net/Orange_Spotty_Cat/article/details/80520839


# 画图
x = iris.data[:, :2]
RF.fit(x, y)
N = 50
cmap_light = ListedColormap(['#FFAAAA', '#AAFFAA', '#AAAAFF'])
cmap_bold = ListedColormap(['#FF0000', '#00FF00', '#0000FF'])
# for weight in ['uniform', 'distance']:
x_min, x_max = x[:, 0].min() - 1, x[:, 0].max() + 1
y_min, y_max = x[:, 1].min() - 1, x[:, 1].max() + 1
xx, yy = np.meshgrid(np.linspace(x_min, x_max, N), np.linspace(y_min, y_max, N))
z_show = np.stack((xx.flat, yy.flat), axis=1)  # 测试点
# z = RF.predict(np.c_[xx.ravel(), yy.ravel()])
z = RF.predict(z_show)
plt.figure()
plt.pcolormesh(xx, yy, z.reshape(xx.shape), shading='auto', cmap=cmap_light)
plt.scatter(x[:, 0], x[:, 1], c=y, cmap=cmap_bold, edgecolors='k', s=20)
plt.xlim(xx.min(), xx.max())
plt.title('RandomForestClassifier')
plt.show()
# print('RandomForestClassifier:', RF.score(x, y))

运行效果:

可视化:

  • 18
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在MATLAB中,可以使用随机森林算法实现鸢尾花的分类。随机森林算法是一种集成学习方法,通过使用多个决策树模型进行分类。每个决策树都是独立地训练的,使用随机选取的特征子集和训练样本集。在分类问题中,随机森林通过投票的方式来决定最终的分类结果。 在MATLAB中,可以使用TreeBagger函数来实现随机森林算法。该函数可以训练一个随机森林分类器,并使用该分类器对新的鸢尾花样本进行分类。具体步骤如下: 1. 首先,加载鸢尾花数据集,并将其拆分为训练集和测试集。 2. 使用TreeBagger函数来训练一个随机森林分类器。可以指定树的数量、特征子集大小等参数。 3. 使用训练好的分类器对测试集进行预测,并评估分类器的性能。 以下是MATLAB代码示例: ```matlab % 加载鸢尾花数据集 load fisheriris % 将数据集拆分为训练集和测试集 cv = cvpartition(species, 'HoldOut', 0.3); dataTrain = meas(cv.training,:); speciesTrain = species(cv.training,:); dataTest = meas(cv.test,:); speciesTest = species(cv.test,:); % 使用TreeBagger函数训练随机森林分类器 numTrees = 100; % 设置树的数量 rng(1); % 设置随机种子,以便结果可复现 rf = TreeBagger(numTrees, dataTrain, speciesTrain, 'Method', 'classification'); % 使用训练好的分类器对测试集进行预测 predictedSpecies = predict(rf, dataTest); % 评估分类器的性能 confusionMatrix = confusionmat(speciesTest, predictedSpecies); accuracy = sum(diag(confusionMatrix)) / sum(sum(confusionMatrix)); % 打印分类器的准确率 disp(['Classifier Accuracy: ', num2str(accuracy)]); ``` 通过上述步骤,你可以使用MATLAB中的随机森林实现鸢尾花的分类。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【机器学习】P24 随机森林算法(1) 实现鸢尾花” 预测](https://blog.csdn.net/weixin_43098506/article/details/130324663)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值