机器学习基本理论

一、什么是机器学习?

让机器从数据里自己找规律,而不是人写死规则。

二 、人工智能、机器学习、深度学习有什么关系?

三、机器学习三要素

机器学习的方法一般主要由三部分构成:模型、策略和算法,可以认为:

机器学习方法 = 模型 + 策略 + 算法

  1. 模型(model):总结数据的内在规律,用数学语言描述的参数系统
  2. 策略(strategy):选取最优模型的评价准则
  3. 算法(algorithm):选取最优模型的具体方法

四、机器学习的图例汇总

五、监督学习的建模流程

六、什么是特征工程?

特征工程(Feature Engineering)是机器学习过程中非常重要的一步,指的是通过对原始数据的处理、转换和构造,生成新的特征或选择有效的特征,从而提高模型的性能。

七、特征选取方法

1、皮尔逊相关系数

python 复制代码
# 特征构造之相关系数:皮尔逊相关系数
import pandas as pd

advertising = pd.read_csv(r'E:/LLM/machine-learning/advertising.csv')
# print(advertising.head())
print(advertising.isnull().sum())

advertising.drop(advertising.columns[0],axis=1,inplace=True)
advertising.dropna(inplace=True)
x = advertising.drop('Sales',axis=1)
y = advertising['Sales']

print(x.corrwith(y,method = 'pearson'))

运行结果如下:

python 复制代码
import seaborn as sns
import matplotlib.pyplot as plt

# 计算皮尔逊相关系数矩阵
corr_matrix = advertising.corr(method='pearson')

# 可视化热力图
sns.heatmap(corr_matrix,annot=True,cmap='coolwarm',fmt='.2f')
plt.show()

运行结果如下:

2、斯皮尔曼相关系数

python 复制代码
# 斯皮尔曼相关系数:两个变量直接的关系

import pandas as pd

# 每周学习时长
X =[[5],[8],[10],[12],[15],[3],[7],[9],[14],[6]]

# 数学成绩
y = [55,65,70,75,85,50,60,72,80,58]

# 计算斯皮尔曼相关系数
X = pd.DataFrame(X)
y = pd.Series(y)

print(X.corrwith(y,method = 'pearson'))

运行结果:

3、主成分分析

python 复制代码
# 主成分分析:通过线性变换将高纬度数据投影到低纬度空间,同时保留数据的主要变化模式

import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
from mpl_toolkits.mplot3d import Axes3D

n_samples = 1000
# 第1个主成分方向
component1 = np.random.normal(0,1,n_samples)
# 第2个主成分方向
component2 = np.random.normal(0,0.2,n_samples)
# 第3个方向(噪声,方差较小)
noise = np.random.normal(0,1,n_samples)
# 构造3维数据
X = np.vstack([component1-component2,component1+component2,component2+noise]).T

# 标准化
scaler = StandardScaler()
X_standardized = scaler.fit_transform(X)

# 应用PCA,将三维数据降维 到2维
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_standardized)

# 可视化
# 转换前的三维数据可视化

fig = plt.figure(figsize=(12,4))
ax1 = fig.add_subplot(121,projection='3d')
ax1.scatter(X[:,0],X[:,1],X[:,2],c='g')
ax1.set_title('Before PCA(3D)')
ax1.set_xlabel('Feature 1')
ax1.set_ylabel('Feature 2')
ax1.set_zlabel('Feature 3')

# 转换后的2维数据可视化
ax2 = fig.add_subplot(122)
ax2.scatter(X_pca[:,0],X_pca[:,1],c='g')
ax2.set_title('After PCA(2D)')
ax2.set_xlabel('Principal Component 1')
ax2.set_ylabel('Principal Component 2')
plt.show()

运行结果如下:

八、模型评估

1、损失函数

对于模型一次预测结果的好坏,需要有一个度量标准。

对于监督学习而言,给定一个输入X ,选取的模型就相当于一个"决策函数"f ,它可以输出一个预测结果f(X) ,而真实的结果(标签)记为Yf(X)Y 之间可能会有偏差,我们就用一个损失函数 (loss function)来度量预测偏差的程度,记作 L(Y,f(X))

(1)、损失函数用来衡量模型预测误差的大小;损失函数值越小,模型就越好;

(2)损失函数是f(X)Y的非负实值函数;

2、欠拟合和过拟合

欠拟合:模型在训练集和测试集上误差都比较大。模型过于简单,高偏差。

过拟合:模型在训练集上误差较小,但在测试集上误差较大。模型过于复杂,高方差。

九、梯度下降法

1、什么是梯度下降法?

梯度下降法(gradient descent)是一种常用的一阶优化方法,是求解无约束优化问题最简单、最经典的方法之一。梯度下降法是迭代算法,基本思路就是先选取一个适当的初始值,然后沿着梯度方向或者负梯度方向,不停地更新参数,最终取到极小值。

十、模型评估指标

1、回归模型常用评估指标:均方误差(MSE)

2、分类模型常用评估指标:准确率

混淆矩阵

准确率

精确率

召回率

F1分数

ROC曲线

AUC

AUC值代表ROC曲线下的面积,用于量化模型性能。AUC值越大,模型区分正负类的能力越强,模型性能越好。AUC值=0.5表示模型接近随机猜测,AUC值=1代表完美模型。

最后用一个简单的代码示例来验证一下:

构建混淆矩阵

python 复制代码
import pandas as pd
import seaborn as sns
from sklearn.metrics import confusion_matrix

label = ["猫", "狗"]  # 标签
y_true = ["猫", "猫", "猫", "猫", "猫", "猫", "狗", "狗", "狗", "狗"]  # 真实值
y_pred1 = ["猫", "猫", "狗", "猫", "猫", "猫", "猫", "猫", "狗", "狗"]  # 预测值
matrix1 = confusion_matrix(y_true, y_pred1, labels=label)  # 混淆矩阵
print(pd.DataFrame(matrix1, columns=label, index=label))
sns.heatmap(matrix1, annot=True, fmt='d', cmap='Greens')

准确率

python 复制代码
from sklearn.metrics import accuracy_score

label = ["猫", "狗"]  # 标签
y_true = ["猫", "猫", "猫", "猫", "猫", "猫", "狗", "狗", "狗", "狗"]  # 真实值
y_pred1 = ["猫", "猫", "狗", "猫", "猫", "猫", "猫", "猫", "狗", "狗"]  # 预测值
accuracy = accuracy_score(y_true, y_pred1)

精确率

python 复制代码
from sklearn.metrics import precision_score

label = ["猫", "狗"] # 标签
y_true = ["猫", "猫", "猫", "猫", "猫", "猫", "狗", "狗", "狗", "狗"] # 真实值
y_pred1 = ["猫", "猫", "狗", "猫", "猫", "猫", "猫", "猫", "狗", "狗"] # 预测值
precision = precision_score(y_true, y_pred1, pos_label="猫") # pos_label指定正例
print(precision)

召回率

python 复制代码
from sklearn.metrics import recall_score

label = ["猫", "狗"] # 标签
y_true = ["猫", "猫", "猫", "猫", "猫", "猫", "狗", "狗", "狗", "狗"] # 真实值
y_pred1 = ["猫", "猫", "狗", "猫", "猫", "猫", "猫", "猫", "狗", "狗"] # 预测值
recall = recall_score(y_true, y_pred1, pos_label="猫") # pos_label指定正例
print(recall)
相关推荐
雷欧力1 天前
Claude Code 两个被低估的新命令:/goal 让它自己干到底,Agent View 让你同时盯十个任务
人工智能
小陈工1 天前
Python异步编程进阶:asyncio高级模式与性能调优
开发语言·前端·数据库·人工智能·python·flask·numpy
Agent手记1 天前
供应商资质智能审核自动化、落地方法与合规校验方案:AGI时代下的企业级风控重塑
运维·人工智能·ai·自动化·agi
数智工坊1 天前
VMware 17 Pro 中 Ubuntu 虚拟机共享 Windows 文件夹(完美踩坑版)
linux·人工智能·windows·ubuntu
这张生成的图像能检测吗1 天前
(论文速读)DSFormer:用于高光谱图像分类的双选择融合变压器网络
人工智能·深度学习·计算机视觉·transformer
黎阳之光1 天前
黎阳之光:视频孪生硬核赋能,共启数字孪生水利监测新征程
大数据·人工智能·算法·安全·数字孪生
观测云1 天前
观测云4月产品升级报告 | 统一目录、Obsy AI 全新上线,基础设施、场景、监控告警、管理多项能力升级
数据库·人工智能·可观测性·产品迭代·观测云
凌杰1 天前
AI 学习笔记:关于 Hermes Agent 的补充
人工智能
wuxianda10301 天前
uniapp项目上架苹果商店4.3a被拒,3天极速解决方案2026.5.8
前端·人工智能·flutter·uni-app·ios上架·苹果上架·苹果4.3a
林小卫很行1 天前
Obsidian 入门45:对自己好一点,给 Obsidian 建个个人主页
人工智能