随机森林算法随笔

主要用于分类。

通过自助法重采样技术( 是一种从给定训练集中有放回的均匀抽样,也就是说,每当选中一个样本,它等可能地被再次选中并被再次添加到训练集中),从原始训练样本集N中又放回的重复随机抽取K个样本生成心得训练样本集合,然后根据自主样本集生成K个分类树组成随机森林,新数据的分类结果按分类树投票多少形成的分数而定。

由很多没有关联的决策树组成

随机森林算法根据花瓣大小来判断花瓣种类:

数据集:

1 5.1 3.5 1.4 0.2 setosa 
2 4.9 3.0 1.4 0.2 setosa 
3 4.7 3.2 1.3 0.2 setosa 
4 4.6 3.1 1.5 0.2 setosa 
5 5.0 3.6 1.4 0.2 setosa 
6 5.4 3.9 1.7 0.4 setosa 
7 4.6 3.4 1.4 0.3 setosa 
8 5.0 3.4 1.5 0.2 setosa 
9 4.4 2.9 1.4 0.2 setosa 
10 4.9 3.1 1.5 0.1 setosa 
11 5.4 3.7 1.5 0.2 setosa 
12 4.8 3.4 1.6 0.2 setosa 
13 4.8 3.0 1.4 0.1 setosa 
14 4.3 3.0 1.1 0.1 setosa 
15 5.8 4.0 1.2 0.2 setosa 
16 5.7 4.4 1.5 0.4 setosa 
17 5.4 3.9 1.3 0.4 setosa 
18 5.1 3.5 1.4 0.3 setosa 
19 5.7 3.8 1.7 0.3 setosa 
20 5.1 3.8 1.5 0.3 setosa 
21 5.4 3.4 1.7 0.2 setosa 
22 5.1 3.7 1.5 0.4 setosa 
23 4.6 3.6 1.0 0.2 setosa 
24 5.1 3.3 1.7 0.5 setosa 
25 4.8 3.4 1.9 0.2 setosa 
26 5.0 3.0 1.6 0.2 setosa 
27 5.0 3.4 1.6 0.4 setosa 
28 5.2 3.5 1.5 0.2 setosa 
29 5.2 3.4 1.4 0.2 setosa 
30 4.7 3.2 1.6 0.2 setosa 
31 4.8 3.1 1.6 0.2 setosa 
32 5.4 3.4 1.5 0.4 setosa 
33 5.2 4.1 1.5 0.1 setosa 
34 5.5 4.2 1.4 0.2 setosa 
35 4.9 3.1 1.5 0.2 setosa 
36 5.0 3.2 1.2 0.2 setosa 
37 5.5 3.5 1.3 0.2 setosa 
38 4.9 3.6 1.4 0.1 setosa 
39 4.4 3.0 1.3 0.2 setosa 
40 5.1 3.4 1.5 0.2 setosa 
41 5.0 3.5 1.3 0.3 setosa 
42 4.5 2.3 1.3 0.3 setosa 
43 4.4 3.2 1.3 0.2 setosa 
44 5.0 3.5 1.6 0.6 setosa 
45 5.1 3.8 1.9 0.4 setosa 
46 4.8 3.0 1.4 0.3 setosa 
47 5.1 3.8 1.6 0.2 setosa 
48 4.6 3.2 1.4 0.2 setosa 
49 5.3 3.7 1.5 0.2 setosa 
50 5.0 3.3 1.4 0.2 setosa 
51 7.0 3.2 4.7 1.4 versicolor 
52 6.4 3.2 4.5 1.5 versicolor 
53 6.9 3.1 4.9 1.5 versicolor 
54 5.5 2.3 4.0 1.3 versicolor 
55 6.5 2.8 4.6 1.5 versicolor 
56 5.7 2.8 4.5 1.3 versicolor 
57 6.3 3.3 4.7 1.6 versicolor 
58 4.9 2.4 3.3 1.0 versicolor 
59 6.6 2.9 4.6 1.3 versicolor 
60 5.2 2.7 3.9 1.4 versicolor 
61 5.0 2.0 3.5 1.0 versicolor 
62 5.9 3.0 4.2 1.5 versicolor 
63 6.0 2.2 4.0 1.0 versicolor 
64 6.1 2.9 4.7 1.4 versicolor 
65 5.6 2.9 3.6 1.3 versicolor 
66 6.7 3.1 4.4 1.4 versicolor 
67 5.6 3.0 4.5 1.5 versicolor 
68 5.8 2.7 4.1 1.0 versicolor 
69 6.2 2.2 4.5 1.5 versicolor 
70 5.6 2.5 3.9 1.1 versicolor 
71 5.9 3.2 4.8 1.8 versicolor 
72 6.1 2.8 4.0 1.3 versicolor 
73 6.3 2.5 4.9 1.5 versicolor 
74 6.1 2.8 4.7 1.2 versicolor 
75 6.4 2.9 4.3 1.3 versicolor 
76 6.6 3.0 4.4 1.4 versicolor 
77 6.8 2.8 4.8 1.4 versicolor 
78 6.7 3.0 5.0 1.7 versicolor 
79 6.0 2.9 4.5 1.5 versicolor 
80 5.7 2.6 3.5 1.0 versicolor 
81 5.5 2.4 3.8 1.1 versicolor 
82 5.5 2.4 3.7 1.0 versicolor 
83 5.8 2.7 3.9 1.2 versicolor 
84 6.0 2.7 5.1 1.6 versicolor 
85 5.4 3.0 4.5 1.5 versicolor 
86 6.0 3.4 4.5 1.6 versicolor 
87 6.7 3.1 4.7 1.5 versicolor 
88 6.3 2.3 4.4 1.3 versicolor 
89 5.6 3.0 4.1 1.3 versicolor 
90 5.5 2.5 4.0 1.3 versicolor 
91 5.5 2.6 4.4 1.2 versicolor 
92 6.1 3.0 4.6 1.4 versicolor 
93 5.8 2.6 4.0 1.2 versicolor 
94 5.0 2.3 3.3 1.0 versicolor 
95 5.6 2.7 4.2 1.3 versicolor 
96 5.7 3.0 4.2 1.2 versicolor 
97 5.7 2.9 4.2 1.3 versicolor 
98 6.2 2.9 4.3 1.3 versicolor 
99 5.1 2.5 3.0 1.1 versicolor 
100 5.7 2.8 4.1 1.3 versicolor 
101 6.3 3.3 6.0 2.5 virginica 
102 5.8 2.7 5.1 1.9 virginica 
103 7.1 3.0 5.9 2.1 virginica 
104 6.3 2.9 5.6 1.8 virginica 
105 6.5 3.0 5.8 2.2 virginica 
106 7.6 3.0 6.6 2.1 virginica 
107 4.9 2.5 4.5 1.7 virginica 
108 7.3 2.9 6.3 1.8 virginica 
109 6.7 2.5 5.8 1.8 virginica 
110 7.2 3.6 6.1 2.5 virginica 
111 6.5 3.2 5.1 2.0 virginica 
112 6.4 2.7 5.3 1.9 virginica 
113 6.8 3.0 5.5 2.1 virginica 
114 5.7 2.5 5.0 2.0 virginica 
115 5.8 2.8 5.1 2.4 virginica 
116 6.4 3.2 5.3 2.3 virginica 
117 6.5 3.0 5.5 1.8 virginica 
118 7.7 3.8 6.7 2.2 virginica 
119 7.7 2.6 6.9 2.3 virginica 
120 6.0 2.2 5.0 1.5 virginica 
121 6.9 3.2 5.7 2.3 virginica 
122 5.6 2.8 4.9 2.0 virginica 
123 7.7 2.8 6.7 2.0 virginica 
124 6.3 2.7 4.9 1.8 virginica 
125 6.7 3.3 5.7 2.1 virginica 
126 7.2 3.2 6.0 1.8 virginica 
127 6.2 2.8 4.8 1.8 virginica 
128 6.1 3.0 4.9 1.8 virginica 
129 6.4 2.8 5.6 2.1 virginica 
130 7.2 3.0 5.8 1.6 virginica 
131 7.4 2.8 6.1 1.9 virginica 
132 7.9 3.8 6.4 2.0 virginica 
133 6.4 2.8 5.6 2.2 virginica 
134 6.3 2.8 5.1 1.5 virginica 
135 6.1 2.6 5.6 1.4 virginica 
136 7.7 3.0 6.1 2.3 virginica 
137 6.3 3.4 5.6 2.4 virginica 
138 6.4 3.1 5.5 1.8 virginica 
139 6.0 3.0 4.8 1.8 virginica 
140 6.9 3.1 5.4 2.1 virginica 
141 6.7 3.1 5.6 2.4 virginica 
142 6.9 3.1 5.1 2.3 virginica 
143 5.8 2.7 5.1 1.9 virginica 
144 6.8 3.2 5.9 2.3 virginica 
145 6.7 3.3 5.7 2.5 virginica 
146 6.7 3.0 5.2 2.3 virginica 
147 6.3 2.5 5.0 1.9 virginica 
148 6.5 3.0 5.2 2.0 virginica 
149 6.2 3.4 5.4 2.3 virginica 
150 5.9 3.0 5.1 1.8 virginica

代码:


import numpy as np
from sklearn.ensemble import RandomForestClassifier

def loadDataSet(file):
    dataSet = []
    labelSet = []
    fr = open(file)
    for line in fr.readlines():
        #print(line)
        lineSet = line.strip().split()
        #print("lineSet")
        #print(lineSet) #每次读取的一行数据
        labelSet.append(lineSet[-1])
        #print(labelSet) #每种花瓣的种类的列表集合
        #print(type(lineSet[:-1])) #lineset[:-1]是指每取一行数据,只取列表除了最后一个元素之外的数据
        lineSet = map(float,lineSet[:-1]) #map函数接受一个函数和一个list,并且把这个函数作用在这个list每个元素上
        #print("lineSet2:")
        #print(type(lineSet))
        dataSet.append(list(lineSet))
        #print(dataSet)
    return dataSet, labelSet

def main():
    dataMat, labelMat = loadDataSet(r'F:\DeepLearning\data.txt')
    #print(type(dataMat),dataMat)
    #print(labelMat)
    model= RandomForestClassifier(n_estimators=50, #随机森林中树的个数,即学习器的个数
                               criterion='gini',
                               max_features="sqrt", #划分叶子节点,选择的最大特征数目
                               min_samples_leaf=1, #叶子节点最少样本数,如果某叶子节点数目这个值,就会和兄弟节点一起被剪枝
                               n_jobs=4,) #并行使用的进程数,默认1个,如果设置为-1,该值为总的核数
    model.fit(dataMat, labelMat)
    x_test = np.array([104.0, 6.3, 2.9, 5.6, 1.8]).reshape(1,-1)
    print(x_test)
    predicted= model.predict(x_test)
    print('predicted:', predicted)

if __name__ == '__main__':
    main()

猜你喜欢

转载自blog.csdn.net/weixin_40688214/article/details/84303337