如何使用Python Scikit-learn创建随机森林分类器?
随机森林 是一种监督式机器学习算法,通过在数据样本上创建决策树来用于分类、回归和其他任务。创建决策树后,随机森林分类器通过投票收集每个决策树的预测并选择最佳解决方案。
随机森林分类器最大的优点之一是通过平均结果来减少过拟合。这就是相比单个决策树获得更好结果的原因。
创建随机森林分类器的步骤
我们可以按照以下步骤使用Python Scikit-learn创建随机森林分类器 −
步骤1 −导入所需的库。
步骤 2 −加载数据集。
步骤 3 −将数据集分为训练和测试数据集。
步骤 4 −从sklearn.ensemble模块中导入随机森林分类器。
步骤 5 −创建数据集的数据框。
步骤 6 −创建随机森林分类器并使用fit()函数训练模型。
步骤 7 −从测试数据集进行预测。
步骤 8 −导入度量标准以找到分类器的准确性。
步骤 9 −打印随机森林分类器的准确性。
示例
在下面的示例中,我们将使用鸢尾花植物数据集来构建随机森林分类器:
# 导入所需的库
import sklearn
import pandas as pd
from sklearn import datasets
# 从sklearn中加载鸢尾花数据集
iris_clf = datasets.load_iris()
print(iris_clf.target_names)
print(iris_clf.feature_names)
# 将数据集分为训练集和测试集
X, y = datasets.load_iris( return_X_y = True)
from sklearn.model_selection import train_test_split
# 60 %训练数据集和40 %测试数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.40)
# 从sklearn模块中导入随机森林分类器
from sklearn.ensemble import RandomForestClassifier
# 创建数据帧
data = pd.DataFrame({'sepallength': iris_clf.data[:, 0],
'sepalwidth': iris_clf.data[:, 1],
'petallength': iris_clf.data[:, 2],
'petalwidth': iris_clf.data[:, 3],
'species': iris_clf.target})
# 创建一个随机森林分类器
RForest_clf = RandomForestClassifier(n_estimators = 100)
# 使用fit()函数在训练数据集上训练模型
RForest_clf.fit(X_train, y_train)
# 从测试数据集中进行预测
y_pred = RForest_clf.predict(X_test)
# 导入计算精度所需的度量标准库
from sklearn import metrics
print('\n'"Accuracy of our Random Forst Classifier is: ",
metrics.accuracy_score(y_test, y_pred)*100)
输出
它将产生以下输出 −
['setosa' 'versicolor' 'virginica']
['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
Accuracy of our Random Forst Classifier is: 95.0
让我们使用分类器预测花的类型−
# 预测花的类型
RForest_clf.predict([[5, 4, 3, 1]])
输出
它将产生以下输出 −
array([1])
数组array([1])代表了versicolor类型。
# 预测花的类型
RForest_clf.predict([[5, 4, 5, 2]])
输出结果
它会输出以下结果 −
array([2])
这里的 array([2]) 表示 鸢尾花中的 维吉尼亚种类。