100天搞定机器学习(100-Days-Of-ML)(十三)随机森林

第十三天

随机森林

随机森林是有监督学习的集成学习模型,主要用于分类和回归。随机森林集成了很多的决策树模型,然后将其每颗树的预测结果组合以获得更加准确和稳定的预测结果。

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)
--------------------------------------
打印混淆矩阵查看结果