决策树
代码实现
from sklearn.tree import DecisionTreeClassifier
# 由于存在离散值,用sklearn的preposseing进行数据的预处理
from sklearn import preprocessing
# 处理数据
data = [['青年','否','否','一般',0],\
['青年','否','否','好',0],
['青年','是','否','好',1],
['青年','是','是','一般',1],
['青年','否','否','一般',0],
['中年','否','否','一般',0],
['中年','否','否','好',0],
['中年','是','是','好',1],
['中年','否','是','非常好',1],
['中年','否','是','非常好',1],
['老年','否','是','非常好',1],
['老年','否','是','好',1],
['老年','是','否','好',1],
['老年','是','否','非常好',1],
['老年','否','否','一般',0],
]
data_df = pd.DataFrame(data,columns=['年龄','有工作','有自己的房子','信贷情况','类别'],dtype=float)
pre = preprocessing.LabelEncoder()
X_train,y_train = data_df.iloc[:,:-1],data_df.iloc[:,-1]
pre.fit(np.unique(X_train)) #np.unique(X_train)对后面的数据进行唯一的解析;
# unique函数去除其中重复的元素,并按元素由大到小返回一个新的无元素重复的元组
print(np.unique(X_train))
X_train = X_train.apply(pre.transform)
print(X_train)
## 对测试数据进行预处理
X_test = pd.DataFrame([['青年','否','是','一般'],
['中年','是','否','好'],
['老年','否','是','一般'],
],columns=['年龄','有工作','有自己的房子','信贷情况'])
pre_test = preprocessing.LabelEncoder()
pre_test.fit(np.unique(X_test)) # 这里有疑问就是上面已经有一个unique了,这里还需要再设置一次吗?答案是需要的,因为处理的是不同的数据
X_test = X_test.apply(pre_test.transform) # 喂进去数据以后,将其进行编码处理
#print(X_test)
## 实例化决策树。训练决策树
clf = DecisionTreeClassifier(random_state=0,max_depth=4)
clf = clf.fit(X_train,y_train)
clf.predict(X_test)
预测结果: