温馨提示×

Python机器学习在Ubuntu上的实践

小樊
38
2025-10-25 00:09:32
栏目: 编程语言

1. 环境准备:更新系统与安装基础工具
在Ubuntu上开展Python机器学习实践前,需先确保系统环境稳定。打开终端,执行以下命令更新系统软件包并安装基础工具(如build-essential用于编译Python扩展、git用于版本控制):

sudo apt update && sudo apt upgrade -y sudo apt install -y python3 python3-pip git build-essential htop 

验证Python与pip版本(需Python 3.6+、pip 20.0+):

python3 --version # 确认Python版本 pip3 --version # 确认pip版本 

2. 配置Python虚拟环境(隔离项目依赖)
为避免不同项目间的库冲突,强烈推荐使用虚拟环境。以Ubuntu自带的venv模块为例,操作步骤如下:

# 创建虚拟环境目录(如命名为"myenv") python3 -m venv myenv # 激活虚拟环境(激活后终端提示符会显示环境名) source myenv/bin/activate 

激活后,后续安装的库将仅存在于该环境中,不会影响系统全局Python配置。

3. 安装核心机器学习库
在激活的虚拟环境中,安装Python机器学习的常用库:

  • 基础数据处理与可视化numpy(数值计算)、pandas(数据框操作)、matplotlib/seaborn(数据可视化);
  • 经典机器学习算法scikit-learn(涵盖分类、回归、聚类等算法);
  • 深度学习框架(可选):tensorflow(适合工业级部署)、torch(PyTorch,灵活易用)。
    执行以下命令安装:
pip install numpy pandas matplotlib seaborn scikit-learn pip install tensorflow # 或 pip install torch torchvision torchaudio(PyTorch) 

若需GPU加速(如使用CUDA),需额外安装对应版本的CUDA Toolkit与cuDNN(参考框架官方文档)。

4. 实践经典机器学习项目(以线性回归为例)
通过一个简单的线性回归案例,熟悉Python机器学习的工作流程。创建linear_regression.py文件,编写以下代码:

import numpy as np from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error # 生成模拟数据(X为特征,y为目标值) X = np.random.rand(100, 1) # 100个样本,1个特征 y = 2 + 3 * X + np.random.randn(100, 1) * 0.1 # 添加噪声 # 划分训练集(80%)与测试集(20%) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 创建线性回归模型并训练 model = LinearRegression() model.fit(X_train, y_train) # 预测测试集结果 y_pred = model.predict(X_test) # 评估模型(均方误差) mse = mean_squared_error(y_test, y_pred) print(f"Mean Squared Error: {mse:.4f}") print(f"Model Coefficient: {model.coef_[0][0]:.4f}, Intercept: {model.intercept_[0]:.4f}") 

运行脚本:

python3 linear_regression.py 

若输出类似Mean Squared Error: 0.0103的结果,说明模型训练成功。

5. 使用Jupyter Notebook进行交互式开发
Jupyter Notebook是数据科学常用的交互式工具,支持代码、文本与可视化结合。安装与启动步骤如下:

# 通过conda安装Jupyter(若未安装conda,可通过Anaconda或miniconda安装) conda install jupyter # 启动Jupyter Notebook(默认端口8888) jupyter notebook 

启动后,终端会显示访问链接(如http://localhost:8888/?token=...),在浏览器中打开即可创建新的Notebook文件(选择"Python 3"内核),编写并运行代码。

6. 扩展:图像处理与计算机视觉(以OpenCV为例)
若需处理图像数据(如分类、检测),可安装opencv-python库。安装命令:

pip install opencv-python 

以下是一个简单的图像分类示例(假设已有图像数据集,存储在images文件夹中,每个图像对应一个标签):

import cv2 import numpy as np from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import accuracy_score import os # 读取图像并转换为灰度图(简化处理) image_folder = "images" images = [] labels = [] for filename in os.listdir(image_folder): img_path = os.path.join(image_folder, filename) img = cv2.imread(img_path) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 转换为灰度图 images.append(gray.flatten()) # 展平图像为一维数组 labels.append(int(filename.split('_')[0])) # 假设文件名格式为"label_xxx.jpg" # 转换为NumPy数组 images = np.array(images) labels = np.array(labels) # 划分训练集与测试集 X_train, X_test, y_train, y_test = train_test_split(images, labels, test_size=0.2, random_state=42) # 训练随机森林分类器 clf = RandomForestClassifier(n_estimators=100) clf.fit(X_train, y_train) # 评估模型 y_pred = clf.predict(X_test) accuracy = accuracy_score(y_test, y_pred) print(f"Image Classification Accuracy: {accuracy:.4f}") 

该示例展示了如何将图像数据转换为模型可处理的格式,并使用经典算法进行分类。

7. 部署机器学习模型为Web服务(以Flask为例)
若需将训练好的模型部署为在线服务,可使用Flask框架。安装Flask:

pip install Flask 

创建app.py文件,编写以下代码(以线性回归模型为例):

from flask import Flask, request, jsonify import numpy as np from sklearn.linear_model import LinearRegression app = Flask(__name__) # 初始化模型(此处直接加载训练好的模型,实际项目中可从文件加载) model = LinearRegression() model.coef_ = np.array([[3.0]]) # 示例系数 model.intercept_ = np.array([2.0]) # 示例截距 # 定义API接口 @app.route('/predict', methods=['POST']) def predict(): # 获取请求中的JSON数据 data = request.get_json() X = np.array(data['features']).reshape(-1, 1) # 转换为二维数组 # 预测结果 prediction = model.predict(X) return jsonify({'prediction': prediction.tolist()}) # 启动服务 if __name__ == '__main__': app.run(host='0.0.0.0', port=5000) 

运行Flask应用:

python3 app.py 

使用curl或Postman发送POST请求(http://localhost:5000/predict),请求体为{"features": [1.0, 2.0, 3.0]},即可获取模型预测结果。

0