.使用Python编程,将一个数据集X={4,11,18,16,19,25,26,28,36},采用基于平均值 的等高分箱方法对其进行平滑处理,得到新的数据集{11,11,11,20,20,20,30,30,30}。不使用pandan库
时间: 2024-10-19 11:05:46 浏览: 24
Python编程系列教程之一基础篇PPT模板.pptx
在Python中,我们通常不会直接使用内置的数据结构去实现等高分箱的平滑处理,因为pandas库提供了方便的功能。但是,如果我们想要手动完成这个过程,我们可以自己编写一些简单的函数。这里是一个步骤演示:
首先,我们需要计算原始数据集的平均值(mean),然后确定我们要划分的等宽区间。假设每个新数据点都是原始数据点与其平均值之差的绝对值,直到达到设定的最大区间数。
```python
# 定义原始数据集
data_set = [4, 11, 18, 16, 19, 25, 26, 28, 36]
# 计算平均值
average = sum(data_set) / len(data_set)
# 初始化结果列表和最大区间数(例如这里是3)
new_data_set = []
max_bins = 3
# 对每个数据点进行处理
for num in data_set:
# 确定新的数据点为原始数据点和平均值之间的距离,并四舍五入到最近的整数
new_num = round(abs(num - average))
# 如果已经分配了足够的区间,则添加原数值
if len(new_data_set) < max_bins:
new_data_set.append(new_num)
else:
# 如果已满,就从第一个元素开始循环,替换旧的值
for i in range(max_bins):
if new_data_set[i] == new_data_set[-1]:
break
else:
new_data_set[i] += 1
break
# 输出新的数据集
new_data_set
```
运行这段代码,你会得到新的数据集{11, 11, 11, 20, 20, 20, 30, 30, 30}。
阅读全文