昨天,我们已建立完随机森林,那今天,我打算使用回归方法去看他得出来结果,所以会跟基尼系数预测类别方法,有些不同:
这边会列出不太一样的地方第一个是分割不采用基尼系数,而是采用MSE最小,作为最佳分割点:
我把原本基尼系数程序保留以做为参考
def Best_Feature_reg(data):
#1为最大(效果最差)
#best_Gini_cofe = 1
#利用MSE最小值作为划分值
best_R2 = float('inf')
#位置最小为0,先设定-1
best_feature_col = -1
#因为数值有可能正或负,所以先设定None
best_split_value = None
#第i个特徵
for l in data.columns:
# print("第",i,"个特徵")
if l==0:
continue
feat_list = [k for k in data[l]]
sortfeats = sorted(list(set(feat_list)))
#print("排序好特徵资料:",sortfeats)
split_list = []
if len(sortfeats)==1:
splitList=sortfeats
else:
for j in range(len(sortfeats) - 1):
split_list.append(np.round((sortfeats[j] + sortfeats[j + 1]) / 2,5))
#print("节点:",split_list)
#每个划分点都测试
for split_value in split_list:
subdata1, subdata2 = split_Data_Set(data, l, split_value)
lenLeft, lenRight = len(subdata1), len(subdata2)
# 防止其中一边为空
if lenLeft == 0 and lenRight != 0:
rightMean = np.mean(subdata1)
R2 = np.mean([(x - rightMean)**2 for x in subdata1])
elif lenLeft != 0 and lenRight == 0:
leftMean = np.mean(subdata2)
R2 = np.mean([(x - leftMean) ** 2 for x in subdata2])
else:
leftMean, rightMean = np.mean(subdata2), np.mean(subdata1)
leftR2 = np.mean([(x - leftMean)**2 for x in subdata2])
rightR2 = np.mean([(x - rightMean)**2 for x in subdata1])
#把MSE相加
R2 = leftR2 + rightR2
if R2 < best_R2:
best_R2 = R2
best_feature_col = l
best_split_value = split_value
# new_Gini = Gini_cofe(subdata1, subdata2)
# #如果基尼系数较小代表比较好
# if new_Gini < best_Gini_cofe:
# best_Gini_cofe = new_Gini
# best_feature_col = l
# best_split_value = split_value
return best_feature_col, best_split_value
best_feature_col, best_split_value=Best_Feature_reg(data)
print("最佳分割特徵为: 第",best_feature_col,"特徵")
print("最佳分割特徵数值为:",best_split_value)
结果如下:
最佳分割特徵为: 第 2 特徵
最佳分割特徵数值为: 0.4495
除了这个还有就是如果是特徵都分完还不能分类-->就用资料平均值
下去做即可
import random as rd
def one_feature_check_reg(data):
if len(data[0])==1:
return np.mean(data)
else:
return False
-->其余方法基本上都相同,所以就不再赘述
好,今天随机森林算是完成了,明天就开始研究支持向量机
男孩看了桌上娃娃,他突然觉得心情悲伤了起来,而且感觉有东西卡在喉咙里,男孩掐住自己喉咙试图把东西吐出来,但毫无作用,紧接着东西不小心被他吞了下去,男孩发现他的胸口自己发出了声音,而那声音正是刚刚听到的歌声,男孩看了一下桌子,发现娃娃和桌子都消失不见,只剩下空荡荡的屋子,和不断发出歌声的胸口
--|一部份是我,一部份是你,只是你想不起来|-- MS.CM
<<: [Day23] Flutter - Domain Error Handle (part7)
正文 以前有透过Freenom注册了一个边缘网域,这次就设定了一个homelab domain,将A...
今天天外飞来一笔说需要 RN 表单画面 emergency!!! 咦咦咦 啊怎麽只有 TextIn...
React本身并没有特别限定专案资料夹的设定方式,但这边建议可以朝以下两种方式着手: 依照功能或所属...
谈到想要管理好一个IT专案,首先要对专案有认识。很多人是被赶鸭子上架以後才认识架子,原来鸭子是站在架...
先简单回顾一下,今天预计分析的题目: 题目连结:https://leetcode.com/prob...