我正在练习将 sklearn 用于决策树,我正在使用网球数据集
play_ 是目标列。
根据我对熵和信息增益的笔和纸计算,根节点应该是outlook_列,因为它具有最高的熵。
我当前在 python 中的代码:
from sklearn.cross_validation import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
from sklearn import tree
from sklearn.preprocessing import LabelEncoder
import pandas as pd
import numpy as np
df = pd.read_csv('playTennis.csv')
lb = LabelEncoder()
df['outlook_'] = lb.fit_transform(df['outlook'])
df['temp_'] = lb.fit_transform(df['temp'] )
df['humidity_'] = lb.fit_transform(df['humidity'] )
df['windy_'] = lb.fit_transform(df['windy'] )
df['play_'] = lb.fit_transform(df['play'] )
X = df.iloc[:,5:9]
Y = df.iloc[:,9]
X_train, X_test , y_train,y_test = train_test_split(X, Y, test_size = 0.3, random_state = 100)
clf_entropy = DecisionTreeClassifier(criterion='entropy')
clf_entropy.fit(X_train.astype(int),y_train.astype(int))
y_pred_en = clf_entropy.predict(X_test)
print("Accuracy is :{0}".format(accuracy_score(y_test.astype(int),y_pred_en) * 100))
我的猜测是,测试和训练拆分的发生方式是,按湿度拆分最终比前景具有更好的信息增益。您是根据训练集还是根据整个数据集进行笔和纸计算?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句