- 实验目的
1.、熟悉sklearn库。
2、熟练Numpy 、Scipy、matplotlib、sklearn库
3、熟练使用sklearn库。
- 实验内容与要求
1、从外部数据集加载
2、对数据集每列进行统计分析 (均值、方差、直方图)
3、对数据集每列进行Z分数标准化并保存
- 实验程序与结果
实验程序如下:
# 导入所需的库
import pandas as pd # 数据处理
import numpy as np # 数学运算
import matplotlib.pyplot as plt # 绘图
from scipy.stats import zscore # 计算Z分数
# 加载数据文件
data = pd.read_csv('prices.txt', header=None, names=['Price1', 'Price2'])
# 数据分析
# 计算第一列的均值和方差
mean_price1 = data['Price1'].mean()
variance_price1 = data['Price1'].var()
# 计算第二列的均值和方差
mean_price2 = data['Price2'].mean()
variance_price2 = data['Price2'].var()
print(f"Price1 = {data['Price1']}")
print(f"Price2 = {data['Price2']}")
# 打印均值和方差
print(f"第一列Price1的均值为:{mean_price1}, 方差为:{variance_price1}")
print(f"第二列Price2的均值为:{mean_price2}, 方差为:{variance_price2}")
# 绘制直方图
plt.figure(figsize=(8, 4)) # 设置图形大小
# 绘制第一列的直方图
plt.subplot(1, 2, 1)
plt.hist(data['Price1'], bins=20, color='yellow', edgecolor='black') # 绘制直方图
plt.title('Histogram of Price1') # 设置标题
plt.xlabel('Price1') # x轴
plt.ylabel('Frequency') # y轴
# 绘制第二列的直方图
plt.subplot(1, 2, 2) # 选择第2个位置
plt.hist(data['Price2'], bins=20, color='green', edgecolor='black') # 绘制直方图
plt.title('Histogram of Price2') # 设置标题
plt.xlabel('Price2') # x轴
plt.ylabel('Frequency') # y轴
# 显示直方图
plt.tight_layout() # 调整子图间距
plt.show() # 显示图形
# Z分数标准化
data_normalized = data.apply(zscore) # 对数据应用Z分数标准化
# 保存标准化后的数据到新文件
data_normalized.to_csv('prices_normalized.txt', index=False, header=False) # 保存到文件
# 打印成功信息
print("数据分析完成。标准化后的数据已保存到prices_normalized.txt。")
1.第一列Price1的均值为:2340.8636363636365, 方差为:1089649.8414376322
2.第二列Price2的均值为:391.29545454545456, 方差为:30081.003699788587
3.数据分析完成。标准化后的数据已保存到prices_normalized.txt。
prices_normalized.txt文件:
四、实验结果分析
实验过程中,首先从外部数据集prices.txt中加载数据,数据集包含两列数值,使用pandas库读取数据后,计算每列数据的均值和方差:
第一列(Price1)均值:2340.86
第一列(Price1)方差:1089649.84
第二列(Price2)均值:391.30
第二列(Price2)方差:30081.00
接着,使用matplotlib库绘制数据直方图,直方图的bins参数设置为20,分成了20个等宽的区间,清晰地看到数据在各个区间的频率分布。
最后,使用scipy库的zscore函数对数据进行了Z分数标准化处理,将数据转换为均值为0、标准差为1的分布,标准化后的数据被保存到了prices_normalized.txt文件中。
五、实验问题解答与体会
通过本次实验,我深入了解了sklearn库及其配套的科学计算工具,如Numpy、Scipy和matplotlib。实验中,我从外部数据集中加载数据,对数据进行了详细的统计分析,并使用matplotlib库绘制了数据的直方图,直观地展示了数据的分布情况,并通过Z分数标准化处理数据,以便于后续的数据分析和模型训练。这个过程不仅锻炼了我的编程技能,也加深了我对数据预处理重要性的认识。