赞
踩
首先说一下,该数据集来源于网络。Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集。通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预测鸢尾花卉属于(Setosa,Versicolour,Virginica)三个种类中的哪一类。数据来源:http://archive.ics.uci.edu/ml/datasets/Iris
- import numpy as np
- import pandas as pd
- import matplotlib.pyplot as plt
- import matplotlib as mpl
- from sklearn.ensemble import RandomForestClassifier
- mpl.rcParams['font.sans-serif'] = ['SimHei']
- mpl.rcParams['axes.unicode_minus'] = False
-
- if __name__ == "__main__":
- iris_feature = '花萼长度', '花萼宽度', '花瓣长度', '花瓣宽度'
- path = 'iris.data' # 数据文件路径
- data = pd.read_csv(path, header=None)
- x_prime = data[list(range(4))]
- y = pd.Categorical(data[4]).codes
- feature_pairs = [[0, 1], [0, 2], [0, 3], [1, 2], [1, 3], [2, 3]]
- for _, pair in enumerate(feature_pairs):
- x = x_prime[pair]
- clf = RandomForestClassifier(n_estimators=100, criterion='entropy', max_depth=4)
- clf.fit(x, y)
- # 训练集上的预测结果
- y_hat = clf.predict(x)
- c = np.count_nonzero(y_hat == y) # np.count_nonzero(a)统计a中为True的个数
- print('特征:', iris_feature[pair[0]], '和', iris_feature[pair[1]],"对类别的影响")
- print('预测正确数目:', c)
- print('准确率: %.2f%%' % (100 * float(c) / float(len(y))), "\n")

结果如下:
- 特征: 花萼长度 和 花萼宽度 对类别的影响
- 预测正确数目: 126
- 准确率: 84.00%
-
- 特征: 花萼长度 和 花瓣长度 对类别的影响
- 预测正确数目: 145
- 准确率: 96.67%
-
- 特征: 花萼长度 和 花瓣宽度 对类别的影响
- 预测正确数目: 146
- 准确率: 97.33%
-
- 特征: 花萼宽度 和 花瓣长度 对类别的影响
- 预测正确数目: 144
- 准确率: 96.00%
-
- 特征: 花萼宽度 和 花瓣宽度 对类别的影响
- 预测正确数目: 145
- 准确率: 96.67%
-
- 特征: 花瓣长度 和 花瓣宽度 对类别的影响
- 预测正确数目: 145
- 准确率: 96.67%

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。