通往 AI 之路:Python 机器学习入门-监督学习
本文介绍了监督学习的常见算法,并提供了Python代码示例、详细注释以及适用场景和实例。作为新手,你可以通过这些示例快速上手,理解每种算法的基本原理和应用场景。希望这些内容能够帮助你更好地学习机器学习!
机器学习基础:监督学习(附Python示例与适用场景)
3.2.1 监督学习
监督学习是机器学习中最常见的学习方式之一。它的核心思想是通过已知的输入和输出数据来训练模型,使得模型能够预测新的输入数据的输出。在监督学习中,数据集通常由输入特征(X)和对应的标签(Y)组成。模型的目标是学习从输入到输出的映射关系。
以下是一些常见的监督学习算法,附上Python代码示例、详细注释以及适用场景和实例,帮助你更好地理解每种算法的应用。
1. 线性回归(Linear Regression)
概述
线性回归是一种用于预测连续值的监督学习算法。它假设输入特征和输出之间存在线性关系。
Python示例
# 导入必要的库
from sklearn.linear_model import LinearRegression
import numpy as np
# 创建一些示例数据
X = np.array([[1], [2], [3], [4], [5]]) # 输入特征(1维)
y = np.array([2, 4, 6, 8, 10]) # 输出标签
# 创建线性回归模型
model = LinearRegression()
# 训练模型
model.fit(X, y)
# 预测新数据
new_X = np.array([[6]])
prediction = model.predict(new_X)
print(f"预测值: {prediction[0]}") # 输出: 预测值: 12.0
# 打印模型参数
print(f"斜率: {model.coef_[0]}, 截距: {model.intercept_}")
适用场景
线性回归适用于预测连续值的问题,例如:
• 房价预测:根据房屋面积、位置等特征预测房价。
• 股票价格预测:根据历史数据预测未来股票价格。
• 销售额预测:根据广告投入、市场活动等预测销售额。
实例
假设你有一组房屋面积和房价的数据,可以用线性回归模型预测新房屋的价格。
# 房价预测示例
# 假设房屋面积和房价数据
X = np.array([[50], [100], [150], [200], [250]]) # 房屋面积(平方米)
y = np.array([150, 300, 450, 600, 750]) # 房价(万元)
# 创建线性回归模型
model = LinearRegression()
# 训练模型
model.fit(X, y)
# 预测新房屋价格
new_X = np.array([[300]])
prediction = model.predict(new_X)
print(f"预测房价: {prediction[0]} 万元") # 输出: 预测房价: 900.0 万元
2. 逻辑回归(Logistic Regression)
概述
逻辑回归是一种用于分类问题的监督学习算法,特别适用于二分类问题。
Python示例
# 导入必要的库
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
# 加载示例数据集
data = load_iris()
X = data.data[:100, :2] # 只使用前两个特征和前100个样本(二分类)
y = data.target[:100]
# 创建逻辑回归模型
model = LogisticRegression()
# 训练模型
model.fit(X, y)
# 预测新数据
new_X = np.array([[5.1, 3.5]])
prediction = model.predict(new_X)
print(f"预测类别: {prediction[0]}") # 输出: 预测类别: 0
适用场景
逻辑回归适用于二分类问题,例如:
• 垃圾邮件分类:判断一封邮件是否为垃圾邮件。
• 疾病诊断:根据患者的症状判断是否患有某种疾病。
• 客户流失预测:判断客户是否会流失。
实例
假设你有一组邮件数据,可以用逻辑回归模型判断新邮件是否为垃圾邮件。
# 垃圾邮件分类示例
# 假设邮件特征和标签数据
X = np.array([[0.1, 0.2], [0.3, 0.4], [0.5, 0.6], [0.7, 0.8]]) # 邮件特征
y = np.array([0, 0, 1, 1]) # 标签(0: 正常邮件,1: 垃圾邮件)
# 创建逻辑回归模型
model = LogisticRegression()
# 训练模型
model.fit(X, y)
# 预测新邮件
new_X = np.array([[0.2, 0.3]])
prediction = model.predict(new_X)
print(f"预测结果: {'垃圾邮件' if prediction[0] == 1 else '正常邮件'}") # 输出: 预测结果: 正常邮件
3. 支持向量机(SVM)
概述
支持向量机(SVM)是一种用于分类和回归的监督学习算法,核心思想是找到一个超平面,将不同类别的数据点最大程度地分开。
Python示例
# 导入必要的库
from sklearn.svm import SVC
from sklearn.datasets import load_iris
# 加载示例数据集
data = load_iris()
X = data.data[:, :2] # 只使用前两个特征
y = data.target
# 创建SVM分类器
model = SVC(kernel='linear') # 使用线性核函数
# 训练模型
model.fit(X, y)
# 预测新数据
new_X = np.array([[5.1, 3.5]])
prediction = model.predict(new_X)
print(f"预测类别: {prediction[0]}") # 输出: 预测类别: 0
适用场景
SVM适用于分类问题,尤其是高维数据,例如:
• 文本分类:根据文本内容分类新闻、评论等。
• 图像分类:根据图像特征分类手写数字、物体等。
• 生物信息学:根据基因数据分类疾病类型。
实例
假设你有一组手写数字图像数据,可以用SVM模型分类新图像中的数字。
# 手写数字分类示例
from sklearn.datasets import load_digits
# 加载手写数字数据集
data = load_digits()
X = data.data
y = data.target
# 创建SVM分类器
model = SVC(kernel='linear')
# 训练模型
model.fit(X, y)
# 预测新图像
new_X = np.array([data.data[0]]) # 使用第一张图像作为新数据
prediction = model.predict(new_X)
print(f"预测数字: {prediction[0]}") # 输出: 预测数字: 0
4. 决策树 & 随机森林(Decision Tree & Random Forest)
概述
决策树是一种树形结构的分类和回归模型,随机森林是多个决策树的集成模型。
Python示例
# 导入必要的库
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
# 加载示例数据集
data = load_iris()
X = data.data
y = data.target
# 创建决策树模型
tree_model = DecisionTreeClassifier()
# 训练决策树模型
tree_model.fit(X, y)
# 创建随机森林模型
forest_model = RandomForestClassifier(n_estimators=100) # 100棵树
# 训练随机森林模型
forest_model.fit(X, y)
# 预测新数据
new_X = np.array([[5.1, 3.5, 1.4, 0.2]])
tree_prediction = tree_model.predict(new_X)
forest_prediction = forest_model.predict(new_X)
print(f"决策树预测类别: {tree_prediction[0]}") # 输出: 决策树预测类别: 0
print(f"随机森林预测类别: {forest_prediction[0]}") # 输出: 随机森林预测类别: 0
适用场景
决策树和随机森林适用于分类和回归问题,例如:
• 客户细分:根据客户行为数据划分客户群体。
• 信用评分:根据客户信用历史预测违约风险。
• 医学诊断:根据患者数据判断疾病类型。
实例
假设你有一组客户数据,可以用随机森林模型预测客户的信用评分。
# 信用评分示例
# 假设客户特征和信用评分数据
X = np.array([[25, 1, 50000], [35, 2, 80000], [45, 1, 120000]]) # 年龄, 信用卡数量, 年收入
y = np.array([0, 1, 1]) # 标签(0: 低信用, 1: 高信用)
# 创建随机森林模型
model = RandomForestClassifier(n_estimators=100)
# 训练模型
model.fit(X, y)
# 预测新客户信用
new_X = np.array([[30, 1, 60000]])
prediction = model.predict(new_X)
print(f"预测信用: {'高信用' if prediction[0] == 1 else '低信用'}") # 输出: 预测信用: 高信用
5. K 近邻(KNN)
概述
K 近邻(KNN)是一种基于实例的学习算法,通过计算新样本与训练集中样本的距离来预测标签。
Python示例
# 导入必要的库
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_iris
# 加载示例数据集
data = load_iris()
X = data.data
y = data.target
# 创建KNN分类器
model = KNeighborsClassifier(n_neighbors=3) # 使用3个最近邻
# 训练模型
model.fit(X, y)
# 预测新数据
new_X = np.array([[5.1, 3.5, 1.4, 0.2]])
prediction = model.predict(new_X)
print(f"预测类别: {prediction[0]}") # 输出: 预测类别: 0
适用场景
KNN适用于分类和回归问题,尤其是小数据集,例如:
• 手写数字识别:根据图像特征分类手写数字。
• 推荐系统:根据用户行为推荐商品或内容。
• 异常检测:根据数据特征检测异常行为。
实例
假设你有一组手写数字图像数据,可以用KNN模型分类新图像中的数字。
# 手写数字分类示例
from sklearn.datasets import load_digits
# 加载手写数字数据集
data = load_digits()
X = data.data
y = data.target
# 创建KNN分类器
model = KNeighborsClassifier(n_neighbors=3)
# 训练模型
model.fit(X, y)
# 预测新图像
new_X = np.array([data.data[0]]) # 使用第一张图像作为新数据
prediction = model.predict(new_X)
print(f"预测数字: {prediction[0]}") # 输出: 预测数字: 0
总结
本文介绍了监督学习的常见算法,并提供了Python代码示例、详细注释以及适用场景和实例。作为新手,你可以通过这些示例快速上手,理解每种算法的基本原理和应用场景。希望这些内容能够帮助你更好地学习机器学习!
更多推荐


所有评论(0)