参考文档
http://sklearn.apachecn.org/cn/0.19.0/modules/tree.html
决策树是机器学习中的监督学习方法,通过创建一种模型从数据特征中学习简单的决策规则来预测一个目标变量的值。
优点:
便于理解
- 使用白盒模型
- 能够处理多路输出的问题
- 可以通过数值统计测试来验证该模型
缺点:
- 模型对数据的泛化性能很差
- 决策树很难清楚的表述某些概念
- 决策树不稳定
示例:
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.feature_extraction import DictVectorizer
def decide_play():
"""
http://sklearn.apachecn.org/cn/0.19.0/modules/tree.html
dtree.csv样例数据:
Outlook,Temperatur,Humidity,Windy,PlayGolf
sunny,85,85,FALSE,no
sunny,80,90,TRUE,no
overcast,83,86,FALSE,yes
rainy,70,96,FALSE,yes
......
:return:
"""
df = pd.read_csv('dtree.csv')
# 将数据转换为字典格式,orient='record'参数指定数据格式为{column:value}的格式
# 第一行数据为{'Outlook':'sunny','Temperatur':85,'Humidity':85,'Windy':'FALSE'}
# 一个字典对应一行数据
dict_train = df.loc[:,['Outlook','Temperatur','Humidity','Windy']].to_dict(orient='record')
#如果pandas从DataFrame取出一行数据,该数据类型会变为Series
dict_target = pd.DataFrame(df['PlayGolf'],columns=['PlayGolf']).to_dict(orient='record')
#训练数据字典向量化
dv_train = DictVectorizer(sparse=False)
x_train = dv_train.fit_transform(dict_train)
#目标数据字典向量化
dv_target = DictVectorizer(sparse=False)
y_target = dv_target.fit_transform(dict_target)
#创建训练模型并训练
d_tree = DecisionTreeClassifier()
d_tree.fit(x_train,y_target)
#预测数据
data_predict = {'Humidity':85,
'Outlook':'overcast',
'Temperatur':85,
'Windy':False}
#数据转换
x_data = dv_train.transform(data_predict)
print(x_data)
print(dv_target.inverse_transform(d_tree.predict(x_data)))
if __name__ == '__main__':
decide_play()