目录
7.1 分类问题基准模型的建立
7.1.1 随机预测算法
7.1.2 Python代码实现随机预测算法(分类)
7.1.3 Python代码实现ZeroR算法(分类)
7.2 回归问题基准模型的建立
7.2.1Python代码实现ZeroR算法(回归)
1、从训练数据中找出不重复的目标值。
2、从不重复的目标值集合中随机选择目标值进行输出
# 导入库
from random import seed
from random import randrange
def Random_Prediction_Algorithm(traning_data,testing_data):
"""
该函数用于建立随机预测算法
Parameters
----------
traning_data : 二维列表
训练数据.
testing_data : 二维列表
测试数据.
Returns
-------
Randomly_predicted_data : 一维列表
随机预测值.
"""
# 将训练数据中的目标值提取出来放在values中
values = [row[-1] for row in traning_data]
# 去重
unique_values = list(set(values))
# 建立一个空列表用于存储随机预测的目标值
Randomly_predicted_data = list()
# 开始遍历(以测试集的样本数)
for row in testing_data:
# 随机生成索引
index = randrange(len(unique_values))
# 根据随机生成的索引去取到相应的预测值
Randomly_predicted_data.append(unique_values[index])
return Randomly_predicted_data
# 主函数
if '__main__' == __name__:
# 定义一个随机种子,使得每次生成的随机数都是确定的(伪随机数)
seed(999)
# 训练样本
traning_data = [[0],[2],[1],[3],[2],[1],[0],[2],[3],[2]]
# 测试样本
testing_data = [[None],[None],[None],[None],[None]]
# 调用Random_Prediction_Algorithm函数生成预测值
predictions = Random_Prediction_Algorithm(traning_data,testing_data)
# 导入库
from random import seed
from random import randrange
def ZeroR_Algorithm_classfication(traning_data,testing_data):
"""
该函数用于根据目标值所占的频率生成预测值
Parameters
----------
traning_data : 二维列表
训练数据.
testing_data : 二维列表
测试数据.
Returns
-------
ZeroR_prediction : 一维列表
随机预测值.
"""
# 将训练数据中的目标值提取出来放在values中
values = [row[-1] for row in traning_data]
# 选出出现频率最大的目标值放在highest_count变量中
highest_count = max(set(values),key=values.count)
ZeroR_prediction = [highest_count for i in range(len(testing_data))]
return ZeroR_prediction
# 主函数
if '__main__' == __name__:
# 定义一个随机种子,使得每次生成的随机数都是确定的(伪随机数)
seed(888)
# 训练样本
traning_data = [[0],[0],[0],[0],[0],[0],[0],[0],[0],[1]]
# 测试样本
testing_data = [[None],[None],[None],[None],[None]]
# 调用ZeroR_Algorithm_classfication函数根据样本所占的频率生成预测值
predictions = ZeroR_Algorithm_classfication(traning_data,testing_data)
# 导入库
from random import seed
from random import randrange
def ZeroR_Algorithm_Regression(traning_data,testing_data):
"""
该函数用于根据目标值生成预测值(平均数)
Parameters
----------
traning_data : 二维列表
训练数据.
testing_data : 二维列表
测试数据.
Returns
-------
ZeroR_prediction : 一维列表
预测值.
"""
# 将训练数据中的目标值提取出来放在values中
values = [row[-1] for row in traning_data]
# 计算训练数据目标值的平均值
prediction = sum(values)/float(len(values))
# 将训练数据目标值的平均值作为模型的预测值
ZeroR_prediction = [prediction for i in range(len(testing_data))]
return ZeroR_prediction
# 主函数
if '__main__' == __name__:
# 定义一个随机种子,使得每次生成的随机数都是确定的(伪随机数)
seed(888)
# 训练样本
traning_data = [[1],[2.3],[4],[5],[6],[8],[9],[7.2],[6.3],[1]]
# 测试样本
testing_data = [[None],[None],[None],[None],[None]]
# 调用ZeroR_Algorithm_Regression函数根据目标值生成预测值(平均数)
predictions = ZeroR_Algorithm_Regression(traning_data,testing_data)