监督学习探秘:从线性回归到决策树

目录

1.前言

2.线性回归原理与应用

[2.1. 线性回归原理](#2.1. 线性回归原理)

[2.2. 线性回归应用](#2.2. 线性回归应用)

2.3.代码实例

3.逻辑回归与分类任务

[3.1. 逻辑回归原理](#3.1. 逻辑回归原理)

[3.2. 逻辑回归应用](#3.2. 逻辑回归应用)

3.3.代码实例

4.决策树与随机森林模型详解

[4.1. 决策树原理](#4.1. 决策树原理)

[4.2. 随机森林原理](#4.2. 随机森林原理)

[4.3. 应用场景](#4.3. 应用场景)

4.4.代码实例

5.总结


**1.**前言

在监督学习的世界里,算法通过学习带有标签的示例来建立模型,从而能够对新的无标签数据进行预测。线性回归、逻辑回归和决策树是监督学习中非常基础且重要的模型。接下来,我们将深入探讨这些模型的原理和应用,并通过代码实例来展示它们的使用。更多Python在人工智能中的使用方法,欢迎关注《Python人工智能实战》栏目!

2.线性回归原理与应用

2.1. 线性回归原理

线性回归是一种简单且常用的监督学习模型,用于预测连续型目标变量与一个或多个特征变量之间的线性关系。其基本形式为:

其中,y 是目标变量,xi​ 是特征变量,βi​ 是对应的权重系数(模型参数),β0​ 是截距项,ε 是误差项,通常假设其服从均值为0的正态分布。

线性回归的目标是通过训练数据最小化残差平方和(RSS),即:

其中,N 是样本数量,yi​ 是第 i 个样本的实际值,y^​i​ 是模型预测值。常用的方法有普通最小二乘法(OLS)和梯度下降法。

2.2. 线性回归应用

线性回归广泛应用于经济学、金融、市场营销、社会科学等领域,用于预测销售额、房价、股票价格、广告点击率等连续型变量。

2.3.代码实例

python 复制代码
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression

# 生成模拟数据
X, y = make_regression(n_samples=100, n_features=1, noise=20, random_state=42)

# 创建并训练线性回归模型
model = LinearRegression()
model.fit(X, y)

# 预测
y_pred = model.predict(X)

# 输出模型参数(权重和截距)
print(f"Weights: {model.coef_}, Intercept: {model.intercept_}")

# 输出R²分数(模型解释力)
r2_score = model.score(X, y)
print(f"R² Score: {r2_score:.2f}")

上述代码首先生成了一个模拟的一维线性回归数据集,然后利用 sklearn 中的 LinearRegression 创建并训练了一个线性回归模型。接着用模型对数据进行预测,并输出模型的权重、截距以及模型在训练数据上的R²分数(决定系数),用于衡量模型的拟合优度。

输出结果:

python 复制代码
Weights: [47.13323967], Intercept: 2.3302306410539453
R² Score: 0.85

3.逻辑回归与分类任务

3.1. 逻辑回归原理

逻辑回归虽然名字中包含"回归",但实际上是一种用于处理二分类问题的监督学习模型。它通过sigmoid函数将线性回归的输出映射到(0, 1)区间,得到样本属于正类的概率。决策边界为:

其中,σ 是sigmoid函数,θ 是模型参数,x 是特征向量。预测时,通常设定一个阈值(如0.5),当概率大于阈值时预测为正类,否则预测为负类。

3.2. 逻辑回归应用

逻辑回归常用于预测用户是否购买产品、邮件是否为垃圾邮件、病人是否有某种疾病等二分类问题。

3.3.代码实例

python 复制代码
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification

# 生成模拟数据
X, y = make_classification(n_samples=100, n_features=10, n_classes=2, random_state=42)

# 创建并训练逻辑回归模型
model = LogisticRegression(random_state=42)
model.fit(X, y)

# 预测
y_pred = model.predict(X)

# 输出模型参数(权重和截距)
print(f"Weights: {model.coef_}, Intercept: {model.intercept_}")

# 输出准确率
accuracy = model.score(X, y)
print(f"Accuracy: {accuracy:.2f}")

这段代码用于演示二分类问题的建模、训练、预测和评估过程,使用了scikit-learn库中的LogisticRegression模型和make_classification数据集生成模拟数据。

输出结果:

python 复制代码
Weights: [[-1.57929515 -0.67319302  2.2134683  -1.07588413  0.17662881  0.13095114
   0.25813356  0.06636873  0.19688602 -0.03893267]], Intercept: [0.10379515]
Accuracy: 1.00

以下示例为逻辑回归模型在乳腺癌数据集上的应用示例,可以看出逻辑回归模型在乳腺癌数据集上取得了较高的准确率。

python 复制代码
from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
# 加载乳腺癌数据集
data = load_breast_cancer()
X = data.data
y = data.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建逻辑回归模型
model = LogisticRegression(max_iter=10000)

# 训练模型
model.fit(X_train, y_train)

# 预测
y_pred = model.predict(X_test)

# 评估模型
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")
# 输出 Accuracy: 0.9590643274853801

4.决策树与随机森林模型详解

4.1. 决策树原理

决策树是一种基于树状结构进行决策的监督学习模型,通过递归地划分数据空间,形成一系列规则(if-then结构)。划分过程基于特征选择、分割点选择,目标是使划分后的子集尽可能"纯"(同类样本集中),通常使用信息熵、基尼指数等指标衡量。

4.2. 随机森林原理

随机森林是一种集成学习方法,它由多个决策树构成,并引入随机性:在构建每棵树时,从原始数据集中抽取有放回的随机样本(bootstrap sample),并从所有特征中随机选取一部分特征用于节点划分。最终,通过多数投票(分类任务)或平均(回归任务)的方式整合所有决策树的结果。

4.3. 应用场景

决策树和随机森林广泛应用于各种分类和回归任务,如客户流失预测、信用评分、疾病诊断、房价预测等。

4.4.代码实例

python 复制代码
from sklearn.datasets import load_breast_cancer
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 加载乳腺癌数据集
data = load_breast_cancer()
X = data.data
y = data.target

# 划分训练集和测试集(如果之前未划分,则重新划分)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建决策树分类器
dt_model = DecisionTreeClassifier()

# 训练决策树模型
dt_model.fit(X_train, y_train)

# 预测
dt_y_pred = dt_model.predict(X_test)

# 评估决策树模型
dt_accuracy = accuracy_score(y_test, dt_y_pred)
print(f"Decision Tree Accuracy: {dt_accuracy}")

# 创建随机森林分类器
rf_model = RandomForestClassifier(n_estimators=100, random_state=42)

# 训练随机森林模型
rf_model.fit(X_train, y_train)

# 预测
rf_y_pred = rf_model.predict(X_test)

# 评估随机森林模型
rf_accuracy = accuracy_score(y_test, rf_y_pred)
print(f"Random Forest Accuracy: {rf_accuracy}")

输出结果:

python 复制代码
Decision Tree Accuracy: 0.9298245614035088
Random Forest Accuracy: 0.9649122807017544

在这个例子中,对比多次的运行结果,随机森林通常会比单棵决策树表现出更高的准确率,因为它通过集成多棵树的预测结果来减少过拟合的风险。

5.总结

综上,线性回归、逻辑回归和决策树/随机森林作为监督学习中的重要模型,分别适用于连续型预测、二分类任务和多元分类/回归任务。理解它们的原理、特点和应用,有助于在实际问题中选择合适的模型进行预测和分析。更多Python在人工智能中的使用方法,欢迎关注《Python人工智能实战》栏目!

相关推荐
zhangfeng11331 分钟前
氨基酸序列表示法,蛋白质序列表达 计算机中机器学习 大语言模型中的表达,为什么没有糖蛋白或者其他基团磷酸化甲基化乙酰化泛素化
人工智能·机器学习·语言模型
喵手3 分钟前
Python爬虫实战:容器化与定时调度实战 - Docker + Cron + 日志轮转 + 失败重试完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·容器化·零基础python爬虫教学·csv导出·定时调度
陈天伟教授12 分钟前
人工智能应用- 语言理解:06.大语言模型
人工智能·语言模型·自然语言处理
海心焱19 分钟前
安全之盾:深度解析 MCP 如何缝合企业级 SSO 身份验证体系,构建可信 AI 数据通道
人工智能·安全
2501_9453184923 分钟前
AI证书能否作为招聘/培训标准?2026最新
人工智能
2601_9491465323 分钟前
Python语音通知接口接入教程:开发者快速集成AI语音API的脚本实现
人工智能·python·语音识别
韦东东23 分钟前
RAGFlow v0.20的Agent重大更新:text2sql的Agent案例测试
人工智能·大模型·agent·text2sql·ragflow
人工智能AI技术27 分钟前
DeepSeek-OCR 2实战:让AI像人一样“看懂”复杂文档
人工智能
OpenBayes44 分钟前
教程上新|DeepSeek-OCR 2公式/表格解析同步改善,以低视觉token成本实现近4%的性能跃迁
人工智能·深度学习·目标检测·机器学习·大模型·ocr·gpu算力
寻梦csdn44 分钟前
pycharm+miniconda兼容问题
ide·python·pycharm·conda