2024年最新机器学习(二)决策树之儿童入学推荐_上学好处 决策树,软件测试框架

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

if name == ‘__main__’:
input_file = ‘nursery.txt’

# 读取数据
schooling_data = []
y = []
count = 0
with open(input_file, 'r') as f:
    for line in f.readlines():
        data = line[:-1].split(',')
        schooling_data.append(data)

schooling_data = np.array(schooling_data)

# 对数据进行标记编码
label_encoder = []
X_encoded = np.empty(schooling_data.shape)

for i,item in enumerate(schooling_data[0]):
    label_encoder.append(preprocessing.LabelEncoder())
    X_encoded[:, i] = label_encoder[-1].fit_transform(schooling_data[:, i])

X = X_encoded[:, :-1].astype(int)
y = X_encoded[:, -1].astype(int)

# 将数据分成训练数据集合测试数据集
num_training = int(0.7\*len(X))

X_train, y_train = X[:num_training], y[:num_training]
X_test, y_test = X[num_training:], y[num_training:]

# 拟合一个决策树回归模型,限制最大深度为4
dt_regressor = DecisionTreeRegressor(max_depth=4)
dt_regressor.fit(X_train, y_train)

# 再用AdaBoost算法的决策树回归模型进行拟合
ab_regressor = AdaBoostRegressor(DecisionTreeRegressor(max_depth=4),
                                 n_estimators=400, random_state=7)
# 第一个参数是基分类器,n\_estimators 基分类器循环次数,random\_state随机种子设置
ab_regressor.fit(X_train, y_train)

# 将训练数据代入普通的决策树
y_pred_dt = dt_regressor.predict(X_test)
# 预测结果暂时以数字形式保存在这个列表中,不一定是整数,可以通过后期设置条件,将其转换成整数。
# 最后反标记编码,输出想要的字符串形式。
y_pred_dt_string = []
print(y_pred_dt.shape)

for i in range(3888 - 1):
    if (y_pred_dt[i] >= 1 and y_pred_dt[i] <= 1.4):
        y_pred_dt_string.append('not\_recom')
    if (y_pred_dt[i] > 1.4 and y_pred_dt[i] <= 2.4):
        y_pred_dt_string.append('priority')
    if (y_pred_dt[i] > 2.4 and y_pred_dt[i] <= 3.4):
        y_pred_dt_string.append('recommend')
    if (y_pred_dt[i] > 3.4 and y_pred_dt[i] <= 4.4):
        y_pred_dt_string.append('spec\_prior')
    if (y_pred_dt[i] > 4.4 and y_pred_dt[i] <= 5):
        y_pred_dt_string.append('very\_recom')


# 将训练数据代入AdaBoost决策树
y_pred_ab = ab_regressor.predict(X_test)

# 评价决策树分类器的训练效果
y_pred_dt = dt_regressor.predict(X_test)
mse = mean_squared_error(y_test, y_pred_dt)
evs = explained_variance_score(y_test, y_pred_dt)
print("\n#### Decision Tree 性能表现 ####")
print("Mean squared error(均方误差) =", round(mse, 2))
print("Explained variance score(可释方差分数) =", round(evs, 2))

# 评价AdaBoost算法的改善效果
y_pred_ab = ab_regressor.predict(X_test)
mse = mean_squared_error(y_test, y_pred_ab)
evs = explained_variance_score(y_test, y_pred_ab)
print("\n#### AdaBoost 性能表现 ####")
print("Mean squared error(均方误差) =", round(mse, 2))
print("Explained variance score (可释方差分数)=", round(evs, 2))

## 调试截图


(1) 读取到的数据截图,放到了schooling\_data这个numpy数组中


![在这里插入图片描述](https://img-blog.csdnimg.cn/20201216211409619.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzY4OTgwNQ==,size_16,color_FFFFFF,t_70)  
 (2) 对数据进行标记编码,发现原来的字符串全都变成了数字  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201216211440925.png)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201216211445986.png)


(3) 训练好决策树后,用测试集得到的预测结果如下。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201216211502332.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzY4OTgwNQ==,size_16,color_FFFFFF,t_70)  
 其中,每个数字都映射到对应的推荐程度,观察输出的结果,在[1,2,3,4,5]范围内,正好对应四种推荐程度(not\_recom, priority, recommend, spec\_prior, very\_recom)。  
 (4) 将测试结果反标记编码,转换为原来的字符串形式  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201216211526424.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzY4OTgwNQ==,size_16,color_FFFFFF,t_70)  
 (5) 评价决策树分类器的测试效果  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201216211537231.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzY4OTgwNQ==,size_16,color_FFFFFF,t_70)




![img](https://img-blog.csdnimg.cn/img_convert/3f654fdf9d2a57f5a194b10e2723a007.png)
![img](https://img-blog.csdnimg.cn/img_convert/6ab7de4ada1a475844980d5991c3b7e5.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

613a03fab5e56a57acb)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值