Skip to content

智能步数预测模型开发与测试

1.导入库

python
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeRegressor
import pickle
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score
  • pandas :数据处理库,⽤于数据读取和操作
  • train_test_split :数据集划分⼯具,⽤于拆分训练集和测试集
  • DecisionTreeRegressor:决策树回归模型类,⽤于建⽴回归模型(预测连续值)
  • pickle : Python 对象序列化模块
  • mean_squared_errorr2_score :回归评估指标(均⽅误差( MSE )、平均绝对误差( MAE )、决定系数( R² ))

2.数据加载与预览

python
df = pd.read_csv('fitness analysis.csv')
print(df.head())
  • pd.read_csv() :读取 CSV ⽂件
    • 参数:⽂件路径 ('fitness analysis.csv')
  • head() :显⽰前 5 行数据
  • 功能:加载数据并初步检查数据结构

3.特征工程

python
X = df[['Your gender ', 'How important is exercise to you ?', 'How healthy do you consider yourself?']]
X = pd.get_dummies(X)
y = df['daily_steps']
  • pd.get_dummies() :将分类变量转为哑变量 (one-hot 编码 )
  • 将 'daily_steps' (每⽇步数)列设置为⽬标变量(因变量)

4.数据集划分

python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
  • train_test_split() :划分训练 / 测试集
    • test_size=0.2 :测试集占 20%
    • random_state=42 :固定随机种⼦保证可重复性

5.决策树回归模型

python
dt_model = DecisionTreeRegressor(random_state=42)
dt_model.fit(X_train, y_train)
  • DecisionTreeRegressor() : 创建决策树回归模型
    • random_state=42 :控制决策树中的随机选择,确保结果可复现
  • fit() :训练模型,学习特征( X_train )与⽬标值( y_train )之间的关系

6.模型保存

python
with open('2.2.5_model.pkl', 'wb') as model_file:
  pickle.dump(dt_model, model_file)
  • pickle.dump() :序列化保存模型
    • 'wb' :⼆进制写入模式
    • 保存到 '2.2.5_model.pkl'

7.预测与评估

python
y_pred = dt_model.predict(X_test)
results = pd.DataFrame({'实际值': y_test, '预测值': y_pred})
results_filename = '2.2.5_results.txt'
results.to_csv(results_filename, index=False, sep='\t')

report_filename = '2.2.5_report.txt'
with open(report_filename, 'w') as f:
  f.write(f'均方误差: {mean_squared_error(y_test, y_pred)}\n')
  f.write(f'平均绝对误差: {mean_absolute_error(y_test, y_pred)}\n')
  f.write(f'决定系数: {r2_score(y_test, y_pred)}\n')
  • predict() :⽣成预测结果

  • 创建包含两列的 DataFrame :

    • " 实际值 " :测试集的真实⽬标值( y_test )
    • " 预测值 " :模型的预测结果( y_pred )
  • 计算三个指标:

    • 均⽅误差( MSE ):预测值与实际值差的平⽅均值(越⼩越好)
    • 平均绝对误差( MAE ):预测误差绝对值的均值(单位与⽬标值相同)
    • 决定系数( R² ):模型解释的数据⽅差⽐例( 0-1 ,越⼤越好)

8.错误分析

  1. 特征选择问题: 选择的特征变量相关性不高,。
  2. 模型复杂度过高或过低:
  3. 异常值或离群点:自变量可能存在异常值,导致模型训练结果不准确。
  4. 目标变量分布:目标变量数据分布不均

9.改进建议

  • 特征工程:重新审视并优化特征选择,确保所选特征对于预测步数具有较强的关联性。
  • 处理异常值: 对数据进行更深入的探索,识别并处理任何异常值或离群点,以提高模型的鲁棒性和泛化能力。
  • 检查数据分布: 确认目标变量(每日步数)的分布情况,考虑是否需要进行数据变换(如对数变换)以改善模型性能。
  • 更换模型:使用随机森林、线性回归等其他模型进行训练测试。