今日的示例代码包含2个部分
1. notebook文件夹内的ipynb文件,介绍下今天的思路
2. 项目文件夹中其他部分:拆分后的信贷项目,学习下如何拆分的,未来你看到的很多大项目都是类似的拆分方法
知识点回顾
1. 规范的文件命名
2. 规范的文件夹管理
3. 机器学习项目的拆分
4. 编码格式和类型注解
作业:尝试针对之前的心脏病项目ipynb,将他按照今天的示例项目整理成规范的形式,思考下哪些部分可以未来复用。
import pandas as pd
def load_heart_data(file_path: str) -> pd.DataFrame:
"""加载心脏病数据集
Args:
file_path: 数据文件路径
Returns:
包含心脏病数据的DataFrame
"""
return pd.read_csv(file_path)
import pandas as pd
from sklearn.preprocessing import StandardScaler
def handle_missing_values(df: pd.DataFrame) -> pd.DataFrame:
"""处理缺失值(中位数填充数值型特征)"
numeric_cols = df.select_dtypes(include=['float64', 'int64']).columns
df[numeric_cols] = df[numeric_cols].fillna(df[numeric_cols].median())
return df
def scale_features(df: pd.DataFrame) -> pd.DataFrame:
"""标准化特征(可复用的数值预处理逻辑)"
scaler = StandardScaler()
numeric_cols = df.select_dtypes(include=['float64', 'int64']).columns
df[numeric_cols] = scaler.fit_transform(df[numeric_cols])
return df
from sklearn.ensemble import RandomForestClassifier
import joblib
def train_heart_model(X_train, y_train, model_path: str):
"""训练心脏病预测模型"
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
joblib.dump(model, model_path) # 保存模型
return model
import matplotlib.pyplot as plt
import seaborn as sns
def plot_correlation_heatmap(df: pd.DataFrame):
"""绘制特征相关性热力图(通用可视化函数)"
plt.figure(figsize=(12, 8))
sns.heatmap(df.corr(), annot=True, cmap='coolwarm')
plt.title('Feature Correlation Heatmap')
return plt