记录科研学习中的探索与实践,分享 Python 在数据科学、机器学习与深度学习领域的心得与代码。
本站是个人学习与研究使用的技术笔记空间,专注于 Python 编程语言 在 机器学习(Machine Learning) 与 深度学习(Deep Learning) 领域的应用探索。所有内容均为个人学习过程的记录与总结,仅供研究参考。
机器学习与深度学习正在深刻改变我们与技术交互的方式。从图像识别到自然语言处理,从推荐系统到自动驾驶,这些技术的应用场景日益广泛。作为一名技术学习者,我通过本站在实践中巩固知识、记录思考。
📌 本站内容仅供个人学习研究使用,所有代码示例均可在公开环境中复现。如有引用外部资料,均会标注来源。
Python 拥有全球最活跃的数据科学生态系统,以下是个人科研学习中经常使用的核心库:
高性能数值计算基础库,提供多维数组对象与丰富的数学函数,是科学计算的基石。
结构化数据处理利器,提供 DataFrame 等数据结构,让数据清洗与分析变得高效直观。
最经典的 Python 可视化库,配合 Seaborn 可绘制出版级质量的统计图表。
统一的机器学习 API,涵盖分类、回归、聚类、降维等经典算法,适合快速实验。
以下是一段典型的数据探索代码示例:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 加载数据集
df = pd.read_csv('dataset.csv')
print(f"数据集形状: {df.shape}")
print(f"列名: {list(df.columns)}")
# 基本统计描述
print(df.describe())
# 缺失值检查
missing = df.isnull().sum()
print(f"缺失值:\n{missing[missing > 0]}")
# 可视化特征分布
fig, axes = plt.subplots(1, 2, figsize=(12, 4))
df['feature_a'].hist(bins=50, ax=axes[0])
axes[0].set_title('Feature A Distribution')
sns.boxplot(data=df, y='feature_b', ax=axes[1])
axes[1].set_title('Feature B Boxplot')
plt.tight_layout()
plt.show()
机器学习是让计算机从数据中自动学习规律和模式的科学。以下是一个完整的分类任务示例,使用经典的鸢尾花数据集:
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report, confusion_matrix
import seaborn as sns
import matplotlib.pyplot as plt
# 加载数据
iris = load_iris()
X, y = iris.data, iris.target
# 划分训练集与测试集
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42, stratify=y
)
# 特征标准化
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
# 训练随机森林分类器
clf = RandomForestClassifier(
n_estimators=100, max_depth=5, random_state=42
)
clf.fit(X_train_scaled, y_train)
# 预测与评估
y_pred = clf.predict(X_test_scaled)
print(classification_report(y_test, y_pred,
target_names=iris.target_names))
# 特征重要性
importances = pd.DataFrame({
'feature': iris.feature_names,
'importance': clf.feature_importances_
}).sort_values('importance', ascending=False)
print("\n特征重要性:\n", importances)
💡 学习建议: 从经典的 Scikit-learn 开始入门,掌握数据预处理、模型训练与评估的完整流程,再逐步深入深度学习框架。
深度学习通过多层神经网络从原始数据中自动学习层次化特征表示。以下是一个使用 PyTorch 实现的简单神经网络,用于手写数字识别:
import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader
from torchvision import datasets, transforms
# 定义网络结构
class SimpleCNN(nn.Module):
def __init__(self):
super().__init__()
self.conv1 = nn.Conv2d(1, 32, kernel_size=3)
self.conv2 = nn.Conv2d(32, 64, kernel_size=3)
self.fc1 = nn.Linear(64 * 5 * 5, 128)
self.fc2 = nn.Linear(128, 10)
self.relu = nn.ReLU()
self.pool = nn.MaxPool2d(2)
def forward(self, x):
x = self.pool(self.relu(self.conv1(x)))
x = self.pool(self.relu(self.conv2(x)))
x = x.view(x.size(0), -1)
x = self.relu(self.fc1(x))
x = self.fc2(x)
return x
# 数据加载
transform = transforms.ToTensor()
train_dataset = datasets.MNIST(
root='./data', train=True,
transform=transform, download=True
)
train_loader = DataLoader(
train_dataset, batch_size=64, shuffle=True
)
# 训练配置
model = SimpleCNN()
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)
# 训练一个 epoch
model.train()
for batch_idx, (data, target) in enumerate(train_loader):
optimizer.zero_grad()
output = model(data)
loss = criterion(output, target)
loss.backward()
optimizer.step()
if batch_idx % 100 == 0:
print(f'Batch {batch_idx}: loss = {loss.item():.4f}')
print("训练完成!")
深度学习框架的选择上,PyTorch 以其动态计算图和直观的调试体验成为科研首选,而 TensorFlow / Keras 在生产部署方面有更成熟的生态。建议初学者从 PyTorch 入手,逐步掌握张量运算、自动求导、模型构建与训练等核心概念。
以下是我个人在学习过程中认为非常有价值的资源,在此分享给同样在路上的学习者:
Python 官方提供的入门教程,语言基础扎实,适合所有阶段的开发者查阅。
Aurélien Géron 所著,理论与实战结合,是机器学习入门的经典之作。
Goodfellow 等人的经典著作,系统阐述深度学习的数学原理与核心算法。
PyTorch 官方文档与教程,示例丰富,是学习深度学习框架的最佳起点。
📚 学习是一场没有终点的旅程。保持好奇、动手实践、持续积累,就是最好的学习方法。