python计算iris数据集的均值_Iris数据集实战

本文使用Python对Iris数据集进行数据分析,包括读取数据、描述性统计和可视化。通过Seaborn库创建散点图和箱线图,揭示花萼和花瓣长度、宽度的分布特性以及与种类的关系。数据中无缺失值,通过特征工程处理Species列,展示了数据的基本信息和预处理过程。
摘要由CSDN通过智能技术生成

本次主要围绕Iris数据集进行一个简单的数据分析, 另外在数据的可视化部分进行了重点介绍.

环境

win8, python3.7, jupyter notebook

目录

正文

1. 项目背景

鸢尾属(拉丁学名:Iris L.), 单子叶植物纲, 鸢尾科多年生草本植物, 开的花大而美丽, 观赏价值很高. 鸢尾属约300种, Iris数据集中包含了其中的三种: 山鸢尾(Setosa),  杂色鸢尾(Versicolour), 维吉尼亚鸢尾(Virginica), 每种50个数据, 共含150个数据. 在每个数据包含四个属性: 花萼长度,花萼宽度,花瓣长度,花瓣宽度, 可通过这四个属性预测鸢尾花卉属于 (山鸢尾, 杂色鸢尾, 维吉尼亚鸢尾) 哪一类.

2. 数据概览

数据来源: https://www.kaggle.com/benhamner/python-data-visualizations/data

2.1 读取数据

数据为csv文件, 读取数据:

importpandas as pd

df_Iris= pd.read_csv('Iris.csv')

2.2 查看前/后5行数据

#前5行

df_Iris.head()#后5行

df_Iris.tail()

通过这10行数据也就大致确定数据维度150行X6列以及各特征内的基本信息:

Id: 鸢尾花编号

SepaLengthCm: 花萼长度, 单位cm

SepalWidthCm: 花萼宽度, 单位cm

PetalLengthCm: 花瓣长度, 单位cm

PetalWidthCm; 花瓣宽度, 单位cm

Species: 鸢尾花种类.

2.3 查看数据整体信息

#查看数据整体信息

df_Iris.info()

RangeIndex: 150 entries, 0 to 149

Data columns (total 6 columns):

Id 150 non-null int64

SepalLengthCm 150 non-null float64

SepalWidthCm 150 non-null float64

PetalLengthCm 150 non-null float64

PetalWidthCm 150 non-null float64

Species 150 non-null object

dtypes: float64(4), int64(1), object(1)

memory usage: 7.1+ KB

得出信息: 150行, 6列,4个64位浮点数, 1个64位整型, 1个python对象, 数据中无缺失值.

2.4 描述性统计

df_Iris.describe()

花萼长度最小值4.30, 最大值7.90, 均值5.84, 中位数5.80, 右偏

花萼宽度最小值2.00, 最大值4.40, 均值3.05, 中位数3.00, 右偏

花瓣长度最小值1.00, 最大值6.90, 均值3.76, 中位数4.35, 左偏

花瓣宽度最小值0.10, 最大值2.50, 均值1.20, 中位数1.30, 左偏

按中位数来度量: 花萼长度 > 花瓣长度 > 花萼宽度 > 花瓣宽度

#注意这里是大写的字母O, 不是数字0.

df_Iris.describe(include =['O']).T

总数150, 3个种类, 最大频数为50, 也就是每种都为50个. 注意top里的指的不是Iris-versicolor最多, 是在频数相同的基础上按照字符串长度进行排名.

可以通过这样对每种进行计数:

df_Iris.Species.value_counts()

Iris-versicolor 50

Iris-virginica 50

Iris-setosa 50

Name: Species, dtype: int64

通过以上, 大致了解数据的基本信息, 现想把Species特征中的'Iris-'字符去掉, 进入特征工程环节.

3. 特征工程

3.1 数据清洗

去掉Species特征中的'Iris-'字符.

#第一种方法: 替换#df_Iris['Species']=

好的,让我来回答你的问题。首先,高斯混合聚类是一种基于概率密度函数的聚类算法。它假设数据集每个样本都是由多个高斯分布组成的混合物。因此,该算法的目标是找到每个高斯分布的均值和方差,以及每个高斯分布在整个数据集的权重。在实际应用,高斯混合聚类被广泛用于图像分割、语音识别、金融分析等领域。 下面是一个使用Python和numpy库实现高斯混合聚类的示例代码,以iris数据集为例: ``` python import numpy as np from scipy.stats import multivariate_normal class GaussianMixtureModel: def __init__(self, n_components, n_iterations): self.n_components = n_components self.n_iterations = n_iterations def fit(self, X): # Initialize parameters n_samples, n_features = X.shape self.weights = np.ones(self.n_components) / self.n_components self.means = X[np.random.choice(n_samples, self.n_components, replace=False)] self.covariances = np.array([np.eye(n_features)] * self.n_components) # Expectation-maximization algorithm for i in range(self.n_iterations): # E-step: compute responsibilities pdfs = np.zeros((n_samples, self.n_components)) for j in range(self.n_components): pdfs[:, j] = self.weights[j] * multivariate_normal.pdf(X, self.means[j], self.covariances[j]) self.responsibilities = pdfs / np.sum(pdfs, axis=1, keepdims=True) # M-step: update parameters self.weights = np.mean(self.responsibilities, axis=0) self.means = np.dot(self.responsibilities.T, X) / np.sum(self.responsibilities, axis=0)[:, np.newaxis] for j in range(self.n_components): diff = X - self.means[j] self.covariances[j] = np.dot(self.responsibilities[:, j] * diff.T, diff) / np.sum(self.responsibilities[:, j]) def predict(self, X): pdfs = np.zeros((X.shape[0], self.n_components)) for j in range(self.n_components): pdfs[:, j] = self.weights[j] * multivariate_normal.pdf(X, self.means[j], self.covariances[j]) return np.argmax(pdfs, axis=1) # Load iris dataset from sklearn.datasets import load_iris X, y = load_iris(return_X_y=True) # Fit Gaussian mixture model gmm = GaussianMixtureModel(n_components=3, n_iterations=100) gmm.fit(X) # Predict clusters y_pred = gmm.predict(X) # Print accuracy from sklearn.metrics import accuracy_score print("Accuracy:", accuracy_score(y, y_pred)) ``` 在上面的代码,我们首先定义了一个GaussianMixtureModel类,它包含两个参数:n_components表示高斯混合模型高斯分布的数量,n_iterations表示期望最大化算法的最大迭代次数。在fit方法,我们首先初始化模型的参数:权重、均值、协方差矩阵。然后,我们使用期望最大化算法迭代更新模型的参数,其E步骤计算每个样本属于每个高斯分布的概率,M步骤更新模型的参数。 在使用上面的代码对iris数据集进行训练和预测后,我们可以使用sklearn.metrics库的accuracy_score函数计算聚类的准确率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值