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

文章三《机器学习基础概念与框架实践》


文章3:机器学习基础概念与框架实践

——从理论到代码,用Scikit-learn构建你的第一个分类模型


一、机器学习基础理论:三大核心类型

机器学习是人工智能的核心,通过数据让计算机自动学习规律并做出预测或决策。根据学习方式,可分为三类:

1. 监督学习(Supervised Learning)
  • 定义:有标签的数据(输入-输出对)训练模型,预测未知数据的标签。
  • 典型任务:分类(如垃圾邮件识别)、回归(如房价预测)。
  • 算法示例:线性回归、决策树、支持向量机(SVM)。
2. 无监督学习(Unsupervised Learning)
  • 定义:无标签数据,通过发现数据内在结构进行聚类或降维。
  • 典型任务:客户分群、图像压缩。
  • 算法示例:K-means聚类、主成分分析(PCA)。
3. 强化学习(Reinforcement Learning)
  • 定义:通过试错,让智能体在环境中学习最优策略。
  • 典型任务:游戏AI(如AlphaGo)、机器人控制。
  • 算法示例:Q-learning、深度Q网络(DQN)。

二、常见机器学习算法与Scikit-learn实践
1. 监督学习:线性回归(Regression)
  • 原理:找到输入特征与连续输出之间的线性关系。
  • Scikit-learn实现
    from sklearn.linear_model import LinearRegression  
    import numpy as np  # 生成模拟数据  
    X = np.array([[1], [2], [3], [4], [5]])  
    y = np.array([2, 4, 6, 8, 10])  # 训练模型  
    model = LinearRegression()  
    model.fit(X, y)  # 预测  
    print("预测X=6时的y值:", model.predict([[6]]))  # 输出:[12.0]  
    

2. 分类算法:决策树(Decision Tree)
  • 原理:通过树状结构划分数据,每个节点代表一个特征判断。
  • Scikit-learn实现
    from sklearn.tree import DecisionTreeClassifier  
    from sklearn.datasets import load_iris  
    from sklearn.model_selection import train_test_split  # 加载鸢尾花数据集  
    iris = load_iris()  
    X_train, X_test, y_train, y_test = train_test_split(  iris.data, iris.target, test_size=0.2, random_state=42  
    )  # 训练决策树  
    model = DecisionTreeClassifier(max_depth=3)  
    model.fit(X_train, y_train)  # 评估  
    print("准确率:", model.score(X_test, y_test))  # 输出:约0.933  
    

3. 支持向量机(SVM)
  • 原理:寻找最优超平面,最大化分类间隔。
  • Scikit-learn实现
    from sklearn.svm import SVC  # 使用SVM分类  
    svm_model = SVC(kernel='linear')  
    svm_model.fit(X_train, y_train)  
    print("SVM准确率:", svm_model.score(X_test, y_test))  # 输出:约0.967  
    

三、数据预处理与特征工程

数据质量直接影响模型效果,以下是关键步骤:

1. 标准化(Standardization)

将数据转换为均值为0、标准差为1的分布(如:X = (X - μ)/σ)。

from sklearn.preprocessing import StandardScaler  scaler = StandardScaler()  
X_scaled = scaler.fit_transform(X)  # 对特征进行标准化  
2. 归一化(Normalization)

将数据缩放到[0,1]范围(如:X = (X - min)/(max - min))。

from sklearn.preprocessing import MinMaxScaler  minmax_scaler = MinMaxScaler()  
X_normalized = minmax_scaler.fit_transform(X)  
3. 处理缺失值(Missing Values)
from sklearn.impute import SimpleImputer  # 用均值填充数值型缺失值  
imputer = SimpleImputer(strategy='mean')  
X_imputed = imputer.fit_transform(X)  

四、实战案例:鸢尾花分类(Iris Classification)
1. 数据加载与探索
import pandas as pd  
from sklearn.datasets import load_iris  iris = load_iris()  
df = pd.DataFrame(data=iris.data, columns=iris.feature_names)  
df['target'] = iris.target  
print(df.head())  

输出示例:

   sepal length (cm)  sepal width (cm)  ...  petal width (cm)  target
0              5.1               3.5  ...               0.2       0
1              4.9               3.0  ...               0.2       0
...  
2. 数据预处理
X = df.drop('target', axis=1)  
y = df['target']  # 划分训练集和测试集  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)  
3. 训练SVM分类器并评估
from sklearn.metrics import accuracy_score, classification_report  svm_model = SVC(kernel='linear')  
svm_model.fit(X_train, y_train)  
y_pred = svm_model.predict(X_test)  # 输出评估指标  
print("准确率:", accuracy_score(y_test, y_pred))  
print("分类报告:\n", classification_report(y_test, y_pred))  

输出示例:

准确率: 1.0  
分类报告:precision    recall  f1-score   support
0       1.00      1.00      1.00         8
1       1.00      1.00      1.00        10
2       1.00      1.00      1.00        10
micro avg       1.00      1.00        28  

五、模型评估指标详解
  • 准确率(Accuracy):正确预测的比例(总体正确性)。
  • 精确率(Precision):预测为正类的样本中实际为正类的比例(避免误报)。
  • 召回率(Recall):实际为正类的样本中被正确预测的比例(避免漏报)。
  • F1-score:精确率和召回率的调和平均,综合两者表现。

六、总结与下一步行动

通过本文,你已掌握:

  1. 机器学习的核心类型(监督、无监督、强化学习)。
  2. Scikit-learn实现线性回归、决策树、SVM等算法。
  3. 数据预处理与特征工程的关键步骤。
  4. 使用鸢尾花数据集完成分类任务,并理解评估指标。

下一步建议

  • 实践:尝试用其他算法(如随机森林)替换SVM,并对比结果。
  • 挑战:探索数据可视化(如用matplotlib绘制决策边界)。
  • 扩展:学习交叉验证、网格搜索调参等高级技巧。

附:学习资源推荐
  • Scikit-learn官方文档:https://scikit-learn.org
  • 书籍:《Hands-On Machine Learning with Scikit-Learn and TensorFlow》
  • 在线课程:Coursera《机器学习专项课程》(吴恩达教授)

通过理论与代码的结合,你已迈出成为机器学习工程师的第一步!动手实践是关键,开始你的第一个项目吧!

http://www.xdnf.cn/news/255007.html

相关文章:

  • 【STM32】定时器输入捕获
  • 怎么实现动态提示词,并提升准确率
  • [面试]SoC验证工程师面试常见问题(二)
  • ps将图标变清晰-cnblog
  • MATLAB绘制局部放大图
  • 【Bootstrap V4系列】 学习入门教程之 组件-警告框(Alert)
  • 【DecAlign】用于解耦多模态表征学习的分层跨模态对齐
  • Spring AI:简化人工智能功能应用程序开发
  • 对称加密算法(AES、ChaCha20和SM4)Python实现——密码学基础(Python出现No module named “Crypto” 解决方案)
  • mysql索引及数据库引擎
  • 计算方法实验三 解线性方程组的直接方法
  • C++模板知识
  • 数据库系统概论|第五章:数据库完整性—课程笔记1
  • PostgreSQL 查看表膨胀情况的方法
  • 【算法基础】冒泡排序算法 - JAVA
  • w317汽车维修预约服务系统设计与实现
  • 藏语英语中文机器翻译入门实践
  • 仿腾讯会议——主界面设计创建房间加入房间客户端实现
  • 大模型压缩技术详解(2025最新进展)
  • python入门
  • kubernetes中离线业务编排详解JobCronJob之Job控制器CronJob
  • 云计算-容器云-部署jumpserver 版本2
  • 4.0/Q2,Charls最新文章解读
  • Android和iOS测试的区别有哪些?
  • CSS 架构与命名规范
  • 安装java11
  • cudaPointerGetAttributes详解
  • 如何利用dify 生成Fine‑tune 需要的Alpaca 格式数据
  • ShaderToy学习笔记 07.Phong光照模型
  • MLPerf基准测试工具链定制开发指南:构建领域特异性评估指标的实践方法