使用随机森林分类对二手房数据集进行分类

在 sklearn 的 ensemble(集成学习)模块中,RandomForestClassifier 类用于实现随机森林分类。该类构造函数的语法如下:
sklearn.ensemble.RandomForestClassifier(n_estimators=’warn’,criterion=’gini’, max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=’auto’, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, bootstrap=True, oob_score=False, n_jobs=None, random_state=None, verbose=0, warm_start=False, class_weight=None)
其中,重要参数的含义如下:

  1. n_estimators:随机森林里树的数量。
  2. criterion:特征属性判别力的评价标准,取值是 gini(默认值)或 entropy。
  3. max_features:允许单棵决策树使用特征的最大数量,取值是 auto/None(不限制)或 sqrt(总特征数的平方根)或数值(总特征的 20%)。
  4. max_depth:树的最大深度,-1 表示完全生长(不限制)。
  5. min_samples_split:拆分内部节点所需要的最小样本数,默认值为 2。
  6. min_samples_leaf:叶子节点所需要的最小样本数。
  7. oob_score:是否使用包外样本(即模型抽样时没有选择的数据)来估计泛化精度。
  8. n_jobs:模型拟合和预测时并行运行的作业数,默认值为 None,表示不使用并行运算,-1 表示使用所有的处理器进行并行运算。
# 导入必要的库
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.ensemble import RandomForestClassifier  # 引入随机森林分类模块
# 转换数据
X ,Y= [],[]  # 读取数据
fr = open("./knn.txt")
for line in fr.readlines():
    line = line.strip().split()
    X.append([int(line[0]),int(line[1])])
    Y.append(int(line[-1]))
X=np.array(X)  # 转换成 NumPy 数组,X 是特征属性集
y=np.array(Y)  # y 是类别标签集
# 训练随机森林模型,限制树的最大深度为 5,树的数目为 10 棵
clf = RandomForestClassifier(max_depth=5, n_estimators=10)
clf.fit(X, y)
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.arange(x_min, x_max, 0.1), np.arange(y_min, y_max, 0.1))
Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.contourf(xx, yy, Z, alpha=0.3)
plt.scatter(X[:, 0], X[:, 1], c=y, marker='D',alpha=1)
plt.show()

在这里插入图片描述

注意,随机森林的每次分类结果都不完全相同总体来说,随机森林分类效果(错误率)与两个因素有关:

  1. 森林中任意两棵树的相关性:相关性越大,错误率越大。
  2. 森林中每棵树的分类能力:每棵树的分类能力越强,整个森林的错误率越低。
  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值