用鸢尾花数据集构建随机森林模型

直接上代码

'''
Created on 2019年3月29日

@author: vincent
'''
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
import pandas as pd
import numpy as np
iris = load_iris() #载入鸢尾花数据集
df = pd.DataFrame(iris.data,columns=iris.feature_names) #设置行列,每行为样本,每列为数据集属性
df['is_train'] = np.random.uniform(0,1,len(df)) <= .75 #每个样本生成一个随机数,小于0.75作为训练集,否则作为测试样本
df['species'] = iris.target_names[iris.target] #添加子属列
print(df.head(150))

train,test = df[df['is_train']==True],df[df['is_train']==False]

features = df.columns[:4]
clf = RandomForestClassifier(n_estimators=10,n_jobs=2) #构建随机森林 n_jobs为运行的CPU数量
x,y = pd.factorize(train['species']) #解析花属列,取得训练集的花属结果
clf.fit(train[features],x) #添加训练集,train[features]为属性,x为结果
 
preds = iris.target_names[clf.predict(test[features])] #子属名
print(pd.crosstab(test['species'], preds,rownames=['actual'],colnames=['preds'])) #crosstab交叉表计算分组频率

期间出现这样的报错

FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.“10 in version 0.20 to 100 in 0.22.”, FutureWarning)

原因是一开始随机森林分类器构造时没有加n_estimators=10,而n_estimators代表森林的决策树个数,默认为10,因为树个数产生为10和100时结果是不一样的,所以这里出现了错误提示,设置决策树个数就可以消除,也可以直接无视报错。
一般经验是决策树个数大于150能取到较为准确的效果,这里例子就用10个做展示。

你可能感兴趣的:(机器学习,python,鸢尾花集,随机森林,python)