100天搞定机器学习(100-Days-Of-ML)(十三)随机森林
第十三天
随机森林
随机森林是有监督学习的集成学习模型,主要用于分类和回归。随机森林集成了很多的决策树模型,然后将其每颗树的预测结果组合以获得更加准确和稳定的预测结果。
第一步:导入库并加载数据集
import numpy as np import pandas as pd dataset = pd.read_csv('../datasets/Socail_Network_Ads.csv') X = dataset.iloc[ : , [2, 3]].values Y = dataset.iloc[ : , 4].values --------------------------------------------------------- 打印数据集查看结果 print(X[0]) print(Y[0])
第二步:划分数据集
from sklearn.model_selection import train_test_split X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.25, random_state = 0)
第三步:特征缩放
from sklearn.preprocessing import StandardScaler sc = StandardScaler() X_train = sc.fit_transform(X_train) X_test = sc.transform(X_test) -------------------------------------------------- fit_transform函数和tranform函数: fit_transform()的作用就是先拟合数据,然后转化它将其转化为标准形式. tranform()的作用是通过找中心和缩放等实现标准化. 到了这里,我们似乎知道了两者的一些差别,就像名字上的不同,前者多了一个fit数据的步骤,那为什么在标准化数据的时候不使用fit_transform()函数呢? 原因如下: 为了数据归一化(使特征数据方差为1,均值为0),我们需要计算特征数据的均值μ和方差σ^2,再使用下面的公式进行归一化: x` = (x - μ) / σ^2 我们在训练集上调用fit_transform(),其实找到了均值μ和方差σ^2,即我们已经找到了转换规则,我们把这个规则利用在训练集上,同样,我们可以直接将其运用到测试集上(甚至交叉验证集),所以在测试集上的处理,我们只需要标准化数据而不需要再次拟合数据.
第四步:训练随机森林模型
from sklearn.ensemble import RandomForestClassifier classifier = RandomForestClassifier(n_estimators = 10, criterion = 'entropy', random_state = 0) classifier.fit(X_train, Y_train)
Tips:RandomForestClassifier主要参数说明
class sklearn.ensemble.RandomForestClassifier(n_estimators=10, 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=1, random_state=None, verbose=0, warm_start=False, class_weight=None) ------------------------------------------------------------------------ 参数较多,只介绍几个常用的参数: 具体的见官网API文档:https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html n_estimators:integer, optional (default=10)整数,可选择(默认值为10)。 随机森林中决策树的数量 criterion:string, optional (default=”gini”) 字符串,可选择(默认值为“gini”)。 衡量分裂质量的性能(函数),一般可选基尼系数gini和信息熵entropy bootstrap: boolean, optional (default=True) 布尔值,可选的(默认值为True) 建立决策树时,是否使用有放回抽样。 其他的参数可参考第七天决策树的部分参数。
第五步:预测结果
Y_pred = classifier.predict(X_test)
第六步:混淆矩阵
from sklearn.metrics import confusion_matrix cm = confusion_matrix(Y_test, Y_pred) -------------------------------------- 打印混淆矩阵查看结果