Pandas for machine learning
2025年2月9日以下是一个 Pandas 和机器学习入门指南,介绍如何结合 Pandas 数据操作和机器学习库(如 Scikit-learn)完成从数据加载到模型训练的基本流程。
Pandas + 机器学习入门指南
1. 什么是 Pandas?
- Pandas 是一个强大的 Python 数据分析库,主要用于 数据清洗、数据操作 和 统计分析。
- 它提供了两种核心数据结构:
- DataFrame:二维表结构(类似 Excel)。
- Series:一维数组(类似单列数据)。
在机器学习中,Pandas 通常用于数据预处理(如加载、清洗、特征工程),是连接数据和机器学习模型的桥梁。
2. Pandas 基础操作
2.1 安装 Pandas
pip install pandas
2.2 导入 Pandas
import pandas as pd
2.3 加载数据
Pandas 支持从多种数据格式加载数据:
- CSV
- Excel
- SQL
- JSON 等
# 加载 CSV 文件
df = pd.read_csv("data.csv")
# 查看前几行数据
print(df.head())
# 查看数据结构信息
print(df.info())
# 查看数据统计摘要
print(df.describe())
2.4 数据基本操作
- 选择列:
# 选择单列
age = df["Age"]
# 选择多列
subset = df[["Age", "Salary"]]
- 过滤行:
# 筛选年龄大于30的行
filtered = df[df["Age"] > 30]
- 添加新列:
# 添加一个新列,表示年收入
df["Annual_Income"] = df["Salary"] * 12
- 处理缺失值:
# 查看缺失值
print(df.isnull().sum())
# 填充缺失值
df.fillna(0, inplace=True)
# 删除缺失值
df.dropna(inplace=True)
- 分组与聚合:
# 按部门分组,计算平均工资
grouped = df.groupby("Department")["Salary"].mean()
print(grouped)
3. Pandas 与机器学习的结合
3.1 数据准备
机器学习模型需要数值化的特征作为输入,因此 Pandas 在特征预处理方面起着重要作用。
(1)选择特征和标签
# 假设 "Salary" 是目标变量,其他是特征
X = df.drop("Salary", axis=1) # 特征
y = df["Salary"] # 标签
(2)类别编码
如果数据中有分类变量,需要将其转化为数值:
# 使用 Pandas 的 get_dummies 方法进行独热编码
X = pd.get_dummies(X, columns=["Department"], drop_first=True)
(3)数据标准化
某些机器学习算法(如线性回归、SVM)对数据的分布敏感,需要对特征进行标准化:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
3.2 使用机器学习模型
(1)加载 Scikit-learn 库
Scikit-learn 是一个流行的 Python 机器学习库,提供了多种模型和工具。
安装:
pip install scikit-learn
导入:
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
(2)划分数据集
将数据划分为训练集和测试集(例如 80% 训练,20% 测试):
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)
(3)训练模型
以线性回归为例:
# 创建模型
model = LinearRegression()
# 训练模型
model.fit(X_train, y_train)
(4)预测与评估
# 在测试集上预测
y_pred = model.predict(X_test)
# 评估模型性能(均方误差)
mse = mean_squared_error(y_test, y_pred)
print(f"Mean Squared Error: {mse}")
3.3 其他机器学习模型示例
分类模型:逻辑回归
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
# 创建逻辑回归模型
classifier = LogisticRegression()
# 训练模型
classifier.fit(X_train, y_train)
# 预测
y_pred = classifier.predict(X_test)
# 评估准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy * 100:.2f}%")
集成模型:随机森林
from sklearn.ensemble import RandomForestRegressor
# 创建随机森林模型
rf_model = RandomForestRegressor(n_estimators=100, random_state=42)
# 训练模型
rf_model.fit(X_train, y_train)
# 预测与评估
y_pred = rf_model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print(f"Random Forest MSE: {mse}")
4. 完整案例:房价预测
以下是一个完整的 Pandas 和机器学习结合的示例,使用波士顿房价数据集预测房价。
4.1 加载数据
from sklearn.datasets import load_boston
# 加载波士顿房价数据集
boston = load_boston()
df = pd.DataFrame(boston.data, columns=boston.feature_names)
# 添加目标变量(房价)
df["PRICE"] = boston.target
# 查看数据
print(df.head())
4.2 数据预处理
# 特征和标签
X = df.drop("PRICE", axis=1)
y = df["PRICE"]
# 标准化特征
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# 划分数据集
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)
4.3 训练模型
from sklearn.linear_model import LinearRegression
# 创建模型
model = LinearRegression()
# 训练模型
model.fit(X_train, y_train)
4.4 评估模型
from sklearn.metrics import mean_squared_error
# 预测
y_pred = model.predict(X_test)
# 计算均方误差
mse = mean_squared_error(y_test, y_pred)
print(f"Mean Squared Error: {mse}")
5. 总结
- Pandas 是机器学习项目的核心数据操作工具,通过它可以轻松完成数据清洗、预处理和特征工程。
- 在机器学习的典型流程中,Pandas 与 Scikit-learn 通常结合使用:
- 加载和清洗数据:用 Pandas。
- 特征工程和标准化:用 Pandas 和 Scikit-learn。
- 模型训练和评估:用 Scikit-learn。
- 学会 Pandas 基础后,可以快速上手数据分析和机器学习的完整工作流。
希望这个入门指南对你有所帮助!