数据挖掘概念与技术习题选做
第二章习题
用python解答如下:
import numpy as np
import matplotlib.pyplot as plt
data = np.array([13,15,16,16,19,20,20,21,22,22,25,25,25,25,30,33,33,35,35,35,35,36,40,45,46,52,70])
# 数据的均值
mean = np.average(data)
print("该数据的均值为:" + str(mean))
# 中位数的位置
median_index = int(len(data)/2)
# 判断数据的奇偶性
if len(data) % 2 == 1:
# 若数据长度为奇数,则中位数为最中间的那个数
median = data[median_index]
else:
# 若数据长度为偶数,则中位数为最中间两个数的平均值
median = (data[median_index-1] + data[median_index]) / 2
print("该数据的中位数为: " + str(median))
# 下面求众数
# 首先创建一个列表,储存没有重复项的数据
data_pure = []
for value in data:
if value not in data_pure:
data_pure.append(value)
for i in range(len(data_pure)):
num = 0
for value in data:
if data_pure[i] == value:
num += 1
if num == 4:
print("该数列的众数数值为" + str(data_pure[i]) + "有" + str(num) + "个")
print("该数据的中列数为: " + str((np.max(data)+np.min(data))/2))
# 四分位数
Q1_index = int(len(data) / 4)
Q2_index = int(len(data) / 4 * 2)
Q3_index = int(len(data) / 4 * 3)
print("第一个四分位数Q1为:" + str(data[Q1_index])+"\n"
"第三个四分位数Q3为:" + str(data[Q3_index]))
# 该数据的分位数列表,为了绘制分位图
f_value = []
for i in range(len(data)):
f_value.append(i/len(data))
# 绘制盒图
fig = plt.figure()
ax1 = fig.add_subplot(121)
ax1.boxplot(data)
# 绘制分位图
ax2 = fig.add_subplot(122)
ax2.scatter(f_value, data)
plt.show()
运行结果为:
解答:根据中位数的近似计算公式:
med