目录
实验目的:
1. 学会安装第三方Python模块
2. 熟悉pandas基本操作
3. 掌握matplotlib绘图
实验内容:
- 安装pandas、matplotlib、scikit-learn
- 加载sklearn中的鸢尾花数据,利用pandas显示各特征的最小值、最大值、平均值、标准差
- 从2中可知有150朵鸢尾花,通过分析这些鸢尾花的种类(target)可以得出每类花的数量,根据每类花的数量利用matplotlib绘制饼图
- 利用pandas将鸢尾花的种类(target)数据转换为onehot编码
- 利用pandas合并鸢尾花数据及其onehot编码
实验步骤:
1.
import pandas as pd
from sklearn.datasets import load_iris
iris = load_iris()
data = pd.DataFrame(iris.data, columns=iris.feature_names)
print(data.describe())
2.
import pandas as pd
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
# 加载完整的鸢尾花数据集
iris = load_iris()
data = pd.DataFrame(iris.data, columns=iris.feature_names)
data['target'] = iris.target
# 统计每个类别的数量
counts = data['target'].value_counts()
# 准备绘制饼图所需的数据和标签
labels = iris.target_names
sizes = counts.values
# 绘制饼图
plt.pie(sizes, labels=labels, autopct='%1.1f%%')
plt.axis('equal') # 使饼图为正圆形
plt.show()
3.
import pandas as pd
from sklearn.datasets import load_iris
# 加载鸢尾花数据集
iris = load_iris()
# 转换为pandas的DataFrame格式
data = pd.DataFrame(iris.data, columns=iris.feature_names)
target = pd.Series(iris.target, name='target')
# 将种类数据进行OneHot编码
onehot_data = pd.get_dummies(target)
# 打印转换后的数据
print(onehot_data)
4.
import pandas as pd
from sklearn.datasets import load_iris
# 加载鸢尾花数据集
iris = load_iris()
# 转换为 pandas 的 DataFrame 格式
data = pd.DataFrame(iris.data, columns=iris.feature_names)
target = pd.Series(iris.target, name='target')
# 将种类数据进行 OneHot 编码
onehot_data = pd.get_dummies(target)
# 合并特征数据和 OneHot 编码后的种类数据
merged_data = pd.concat([data, onehot_data], axis=1)
# 打印合并后的数据
print(merged_data.head())
实验心得:
在第一次调试运行时,运行后出现KeyError: 'target',我以为加载了整个sklearn中的鸢尾花数据集。但实际上,load_iris()函数只加载了特征数据,没有加载目标变量。在合并特征数据和 OneHot 编码后的种类数据时,应该将它们沿着列的方向进行合并(即 axis=1),而不是沿着行的方向进行合并。实验过程中忘记导入模块,添加后运行。对于经过 OneHot 编码的种类数据,通常需要将其转换为数值类型。。