当前位置: 首页 > 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《机器学习专项课程》(吴恩达教授)

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

相关文章:

  • 【Android】Intent
  • LeetCode 560. 和为 K 的子数组 | 前缀和与哈希表的巧妙应用
  • LeetCode算法题 (移除链表元素)Day15!!!C/C++
  • 如何在linux服务器下载gitee上的模型
  • 开启 Spring AI 之旅:从入门到实战
  • 开发规范-Restful
  • Linux 常用命令 - tar【归档与压缩】
  • C++负载均衡远程调用学习之UDP SERVER功能
  • MATLAB技巧——norm和vecnorm两个函数讲解与辨析
  • 组件通信-$attrs
  • 重构编程范式:解码字节跳动 AI 原生 IDE Trae 的技术哲学与实践价值
  • 数据结构学习之算法复杂度
  • 2025大模型安全研究十大框架合集(10份)
  • C++之类和对象基础
  • 微服务中组件扫描(ComponentScan)的工作原理
  • 【黑马JavaWeb+AI知识梳理】后端Web基础02 - Web基础
  • 单片机-STM32部分:1、STM32介绍
  • 【C++】认识map和set
  • Vue3源码学习4-effect中为什么使用WeakMap,Set?
  • 深入理解 MyBatis 代理机制
  • 新势力4月销量出炉:零跑逾4万辆再夺冠,蔚来环比增近六成,小米下滑
  • 思政课也精彩,“少年修齐讲堂”开讲《我的中国“芯”》
  • 杭州挂牌临平区两宗住宅用地,起始总价约11.02亿元
  • 人民日报社论:坚定信心、奋发有为、创新创造——写在“五一”国际劳动节
  • 证监会副主席王建军被查
  • 神舟十九号航天员乘组平安抵京