在數據挖掘過程中,數據的認識是非常重要的一步,它為后續的數據分析、建模、特征選擇等工作奠定基礎。以鳶尾花數據集(Iris Dataset)數據集之鳶尾花數據集(Iris Dataset)-CSDN博客為例,下面將介紹如何從數據下載到可視化展示進行深入認識。
1. 數據下載
鳶尾花數據集是一個經典的機器學習數據集,通常用于分類任務。這個數據集可以從多個來源獲得,包括通過sklearn
庫直接加載。
from sklearn.datasets import load_iris# 加載鳶尾花數據集
iris = load_iris()# 查看數據集的基本信息
print(iris.keys())
數據集包含以下幾個重要部分:
data
: 特征數據,包含150個樣本,每個樣本有4個特征(如花萼長度、花萼寬度、花瓣長度、花瓣寬度)。target
: 目標標簽,包含樣本所屬的類別(共三類:Setosa, Versicolor, Virginica)。feature_names
: 特征的名稱(例如 'sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)')。target_names
: 類別的名稱(例如 'setosa', 'versicolor', 'virginica')。DESCR
: 數據集的描述信息。
2. 數據加載與基本信息
使用sklearn
加載數據后,可以通過pandas
將其轉換為DataFrame
,更便于查看和操作。
import pandas as pd# 將數據轉換為pandas DataFrame
iris_df = pd.DataFrame(data=iris.data, columns=iris.feature_names)# 將目標標簽添加到DataFrame中
iris_df['species'] = pd.Categorical.from_codes(iris.target, iris.target_names)# 查看數據集基本信息
print(iris_df.info())# 查看數據集的前幾行
print(iris_df.head())
3. 數據統計描述
我們可以查看數據集的統計描述信息,了解每個特征的分布情況。
# 獲取數據的統計描述
print(iris_df.describe())
4. 數據可視化
數據可視化可以幫助我們理解特征之間的關系,識別數據的模式,并且能夠分辨不同類別樣本在特征空間中的分布情況。
4.1 成對關系圖(Pairplot)
成對關系圖能夠展示所有特征之間的兩兩關系,并且可以通過顏色區分不同類別。
import seaborn as sns# 繪制成對關系圖
sns.pairplot(iris_df, hue='species', palette='Set2')
4.2 箱線圖(Boxplot)
箱線圖能幫助我們觀察每個特征的分布情況,并檢測是否存在異常值。
# 繪制箱線圖
plt.figure(figsize=(10, 6))
sns.boxplot(x='species', y='sepal length (cm)', data=iris_df)
plt.title('Boxplot of Sepal Length by Species')
plt.show()
4.3 熱力圖(Heatmap)
熱力圖可以幫助我們了解特征之間的相關性,并觀察是否存在多重共線性。
import matplotlib.pyplot as plt
import seaborn as sns# 計算特征之間的相關性
correlation = iris_df.iloc[:, :-1].corr()# 繪制熱力圖
plt.figure(figsize=(8, 6))
sns.heatmap(correlation, annot=True, cmap='coolwarm', fmt='.2f')
plt.title('Correlation Heatmap of Iris Dataset')
plt.show()
5. 處理缺失值(如果有)
雖然鳶尾花數據集本身沒有缺失值,但在實際數據中,缺失值的處理是很常見的。我們可以使用pandas
來檢查并處理缺失值:
# 檢查缺失值
print(iris_df.isnull().sum())# 假設有缺失值的列,使用均值填充
iris_df.fillna(iris_df.mean(), inplace=True)
7. 2D和3D可視化
2D可視化
import matplotlib.pyplot as plt
import numpy as np
from sklearn.datasets import load_iris# Load the Iris dataset
iris = load_iris()
X = iris.data[:, :2] # Use the first two features (Sepal Length and Sepal Width)
y = iris.target# Create a 2D scatter plot
fig = plt.figure(figsize=(10, 7))
ax = fig.add_subplot(111)# Map species to colors
colors = ['r', 'g', 'b']
species_names = iris.target_names# Plot each species
for i in range(3):ax.scatter(X[y == i, 0], X[y == i, 1], label=species_names[i], color=colors[i], alpha=0.6)ax.set_xlabel('Sepal Length (cm)')
ax.set_ylabel('Sepal Width (cm)')
ax.set_title('2D Scatter Plot of Iris Dataset')
ax.legend()
plt.show()
3D可視化
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np# Extract features and target
X = iris.data[:, :3] # Use the first three features for 3D visualization
y = iris.target# Create a 3D scatter plot
fig = plt.figure(figsize=(10, 7))
ax = fig.add_subplot(111, projection='3d')# Map species to colors
colors = ['r', 'g', 'b']
species_names = iris.target_namesfor i in range(3):ax.scatter(X[y == i, 0], X[y == i, 1], X[y == i, 2], label=species_names[i], color=colors[i], alpha=0.6)ax.set_xlabel('Sepal Length (cm)')
ax.set_ylabel('Sepal Width (cm)')
ax.set_zlabel('Petal Length (cm)')
ax.set_title('3D Scatter Plot of Iris Dataset')
ax.legend()
plt.show()
7. 小結
通過加載、查看和可視化鳶尾花數據集,我們可以更好地理解數據的結構、特征分布以及不同類別樣本的區分度。這為后續的數據分析、特征選擇以及機器學習建模提供了重要的基礎。數據挖掘的第一步是對數據的深刻理解,只有了解了數據,才能采取合適的預處理步驟,最終構建有效的模型。
8. 總結
- 數據下載與加載: 使用
sklearn.datasets.load_iris()
加載數據,并通過pandas
查看數據。 - 統計描述: 使用
describe()
查看數據的基本統計信息。 - 可視化: 使用
seaborn
繪制成對關系圖、箱線圖和熱力圖,了解數據的分布和特征之間的關系。 - 缺失值處理: 使用
pandas
處理缺失值(在實際情況中常見)。
通過這些方法,可以掌握如何處理數據、理解數據以及如何為后續分析做好準備。