![](https://csdnimg.cn/release/download_crawler_static/87760037/bg7.jpg)
3.3 NBA 比赛结果预测 37
1
2
3
4
5
12
6
7
8
9
10
11
决策树的另一个参数是创建决策的标准,常用的有以下两个。
基尼不纯度(Gini impurity):用于衡量决策节点错误预测新个体类别的比例。
信息增益(Information gain):用信息论中的熵来表示决策节点提供多少新信息。
3.2.2 使用决策树
从scikit-learn库中导入DecisionTreeClassifier类,用它创建决策树。
from sklearn.tree import DecisionTreeClassifier
clf = DecisionTreeClassifier(random_state=14)
我们再次设定
random_state的值为14。本书中凡是用到random_state的
地方,我们都用该值。使用相同的随机种子(random seed),能够保证几次实
验结果相同。然而,在以后自己的实验中,为保证算法的性能不是与特定的随机
状态值相关,在前后几次实验中,需使用不同的随机状态。
现在我们从pandas数据框中抽取数据,以便用
scikit-learn分类器处理。指定需要的列,
使用数据框的
values属性,就能获取到每支球队的上一场比赛结果。
X_previouswins = dataset[["HomeLastWin", "VisitorLastWin"]].values
跟第2章的近邻算法类似,决策树也是一种估计器,因此它同样有fit和predict方法。我
们仍然可以用
cross_val_score方法来求得交叉检验的平均正确率:
scores = cross_val_score(clf, X_previouswins, y_true,
scoring='accuracy')
print("Accuracy: {0:.1f}%".format(np.mean(scores) * 100))
正确率为56.1%,比起随机预测来要更准确!我们应该可以做得更好。从数据集中构建有效
特征(Feature Engineering,特征工程)是数据挖掘的难点所在,好的特征直接关系到结果的正确
率——甚至比选择合适的算法更重要!
3.3 NBA 比赛结果预测
尝试使用不同的特征,我们应该能做得更好。cross_val_score方法可用来测试模型的正
确率。有了它,我们就可以尝试其他特征的分类效果。
好多潜在特征都可以拿来用。就我们这个挖掘任务而言,具体怎么选择特征呢?我们尝试问
自己以下两个问题。