有些决策、分类的规则,手写比较麻烦,但用机器学习模型,比如LR搞的话又比较难运营和理解。这时,通过少node的决策树模型来做,并将其生成规则,是一个折衷的解决方案。
import numpy as np
from sklearn.tree import DecisionTreeRegressor
from sklearn.tree import _tree
trainx = []
trainy = []
with open('vm06.xy') as fd:
fdl = fd.readline()
while len(fdl) > 0:
v = fdl.split(' ')
trainx.append(np.asarray([float(v[2]), float(v[3]), float(v[4]), float(v[5].strip())])) #v[2]~v[5]是特征
trainy.append(float(v[1]) > 60) #v[1]的值用于分类,大于60为True,小于等于60为False
fdl = fd.readline()
regressor = DecisionTreeRegressor(max_leaf_nodes=8)
regressor.fit(np.asarray(trainx), np.asarray(trainy))
res = regressor.predict(trainx[39:51])
print (res, trainy[39:51])
def tree_to_code(tree, feature_names):
tree_ = tree.tree_
feature_name = [
feat