当前位置: 首页 > article >正文

机器学习实战:从数据准备到模型部署

引言
机器学习(Machine Learning)作为人工智能的一个重要分支,已经在各个领域得到了广泛应用。本篇文章将通过一个实际案例,详细介绍机器学习的实战流程,包括数据准备、模型选择、训练与评估、以及模型的部署。

案例背景

假设我们要预测房价。我们将使用一个公开数据集,包含房屋的各种特征(如面积、卧室数量、位置等)以及对应的价格。我们的目标是构建一个机器学习模型,能够根据房屋特征预测其价格。

1. 数据准备

1.1 数据收集

我们使用Kaggle上公开的“波士顿房价”数据集。数据集包括以下特征:

  • CRIM:城镇人均犯罪率

  • ZN:住宅用地比例

  • INDUS:非零售商用土地比例

  • CHAS:查尔斯河虚拟变量(如果房屋位于河边=1,否则=0)

  • NOX:一氧化氮浓度

  • RM:平均房间数

  • AGE:自住单位的比例

  • DIS:与五个波士顿就业中心的加权距离

  • RAD:便利指数

  • TAX:财产税率

  • PTRATIO:学生与教师比例

  • B:黑人比例

  • LSTAT:人口中地位低下者的比例

  • MEDV:房价中位数

1.2 数据清洗

在数据集上进行数据清洗是确保模型性能的关键步骤。我们将执行以下操作:

  • 缺失值处理:检查并处理缺失值,可以选择删除或填充。
  • 数据类型转换:确保特征的类型正确,比如将类别变量转换为分类变量。
  • 异常值检测:通过箱线图等方法识别和处理异常值。
import pandas as pd

# 读取数据
data = pd.read_csv('boston.csv')

# 检查缺失值
print(data.isnull().sum())

# 处理缺失值
data.fillna(data.mean(), inplace=True)

# 检查数据类型
print(data.dtypes)

1.3 数据预处理

  • 特征缩放:由于特征的量级可能不同,采用标准化(StandardScaler)或归一化(MinMaxScaler)。
  • 特征选择:选择相关性高的特征,通过相关性矩阵或Lasso回归进行筛选。
from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
data_scaled = scaler.fit_transform(data.drop('MEDV', axis=1))

2. 模型选择与训练

2.1 选择模型

常用的回归模型包括线性回归、决策树回归、随机森林回归等。这里我们选择随机森林回归模型。

2.2 划分数据集

将数据集划分为训练集和测试集,通常比例为80:20。

from sklearn.model_selection import train_test_split

X = data_scaled
y = data['MEDV']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

2.3 模型训练

使用随机森林回归模型进行训练,并调优超参数。

from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import GridSearchCV

rf = RandomForestRegressor()
param_grid = {'n_estimators': [100, 200], 'max_depth': [None, 10, 20]}
grid_search = GridSearchCV(rf, param_grid, cv=5)
grid_search.fit(X_train, y_train)

3. 模型评估

使用均方误差(MSE)和决定系数(R²)评估模型的性能。

from sklearn.metrics import mean_squared_error, r2_score

y_pred = grid_search.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)

print(f'MSE: {mse}, R²: {r2}')

4. 模型部署

将训练好的模型部署到服务器上,提供API接口以供调用。

4.1 模型保存

使用joblibpickle保存模型。

from flask import Flask, request, jsonify
import joblib

app = Flask(__name__)
model = joblib.load('rf_model.pkl')

@app.route('/predict', methods=['POST'])
def predict():
    data = request.json['data']
    prediction = model.predict([data])
    return jsonify({'prediction': prediction[0]})

if __name__ == '__main__':
    app.run(debug=True)

4.2 创建API接口

使用Flask框架创建一个简单的API接口。

from flask import Flask, request, jsonify
import joblib

app = Flask(__name__)
model = joblib.load('rf_model.pkl')

@app.route('/predict', methods=['POST'])
def predict():
    data = request.json['data']
    prediction = model.predict([data])
    return jsonify({'prediction': prediction[0]})

if __name__ == '__main__':
    app.run(debug=True)

 结论

本文通过波士顿房价预测案例,详细讲解了机器学习的实战流程。包括数据准备、模型训练与评估,以及模型部署等关键步骤。通过这个过程,我们能够更深入地理解机器学习项目的实际操作,提升我们的实践能力。未来,随着技术的不断发展,机器学习将会在更多领域发挥更大作用。


http://www.kler.cn/a/376759.html

相关文章:

  • 占地1.1万平,2亿投资的智能仓储系统:高架库、AGV、码垛机器人……
  • openEuler 系统中 Samba 文件共享服务器管理(windows、linux文件共享操作方法)
  • 嵌入式linux系统中串口驱动框架分析
  • ChatGPT 和 RAG(检索增强生成)的区别;ChatGPT 和 RAG 的联系
  • 【MySQL】 穿透学习数据库理论与知识剖析
  • 使用opencv调用TV_L1算法提取光流
  • 网关如何传递信息给微服务
  • 虚拟机安装Ubuntu系统
  • Kafka物理存储机制深度解析
  • 市场分化!汽车零部件「变天」
  • 《化学试剂》
  • linux8在线扩容/home目录
  • Redis中String 的底层实现是什么?
  • 读书笔记--类加载器
  • 深入理解网络协议:OSPF、VLAN、NAT与ACL详解
  • 学习正则表达式,如何校验手机号与电子邮箱
  • RabbitMQ替换默认端口
  • C语言实验 选择结构
  • C++之“取地址运算符重载”
  • 从0开始的STM32之旅 7 串口通信(I)
  • idea 配置tomcat 服务
  • SpringBoot抗疫物资管理:系统开发与部署
  • 2024/11/2 安卓创建首页界面
  • 【MATLAB源码-第196期】基于matlab的A*融合DWA算法栅格路径规划仿真,画出路径图、姿态角度以及线角速度。
  • git入门教程2:git发展历史
  • 【ESP32】ESP-IDF开发 | PWM脉宽调制器+PWM波形输出和捕获例程