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")