算法学习9——机器学习算法(1)

机器学习是人工智能的一个分支,通过从数据中学习模型来进行预测或决策。本文将介绍几种常见的机器学习算法,包括线性回归、逻辑回归、决策树、支持向量机和K最近邻,并提供每种算法的Python代码示例。

1. 线性回归(Linear Regression)

线性回归是一种用于建模变量之间线性关系的回归分析方法。其目的是找到最优的线性方程来预测因变量的值。

实现过程

  1. 选择一组特征和目标变量。
  2. 通过最小化均方误差(MSE)来拟合线性模型。
  3. 使用拟合的模型进行预测。

Python代码

python 复制代码
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

# 生成示例数据
X = np.array([1, 2, 3, 4, 5]).reshape(-1, 1)
y = np.array([1, 3, 2, 3, 5])

# 创建线性回归模型并拟合数据
model = LinearRegression()
model.fit(X, y)

# 进行预测
y_pred = model.predict(X)

# 绘制数据点和拟合线
plt.scatter(X, y, color='blue')
plt.plot(X, y_pred, color='red')
plt.title('Linear Regression')
plt.xlabel('X')
plt.ylabel('y')
plt.show()

2. 逻辑回归(Logistic Regression)

逻辑回归是一种用于分类问题的回归分析方法。它通过使用逻辑函数将线性回归的输出映射到[0, 1]之间,从而进行分类。

实现过程

  1. 选择一组特征和目标变量。
  2. 使用逻辑函数拟合线性模型。
  3. 通过最大化似然函数来估计模型参数。
  4. 使用拟合的模型进行分类预测。

Python代码

python 复制代码
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression

# 生成示例数据
X = np.array([[1], [2], [3], [4], [5]])
y = np.array([0, 0, 0, 1, 1])

# 创建逻辑回归模型并拟合数据
model = LogisticRegression()
model.fit(X, y)

# 进行预测
y_pred = model.predict(X)

# 绘制数据点和决策边界
plt.scatter(X, y, color='blue')
plt.plot(X, model.predict_proba(X)[:, 1], color='red')
plt.title('Logistic Regression')
plt.xlabel('X')
plt.ylabel('Probability')
plt.show()

3. 决策树(Decision Tree)

决策树是一种树状结构的监督学习算法。它通过对特征进行条件判断,将数据逐步划分成多个子集,从而进行分类或回归。

实现过程

  1. 选择一个特征进行划分,最大化信息增益或基尼指数。
  2. 对每个子集递归地应用决策树算法。
  3. 直到满足停止条件(如达到最大深度或子集纯度)为止。

Python代码

python 复制代码
import numpy as np
import matplotlib.pyplot as plt
from sklearn.tree import DecisionTreeClassifier
from sklearn import tree

# 生成示例数据
X = np.array([[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]])
y = np.array([0, 0, 1, 1, 1])

# 创建决策树模型并拟合数据
model = DecisionTreeClassifier()
model.fit(X, y)

# 可视化决策树
plt.figure(figsize=(10, 6))
tree.plot_tree(model, filled=True)
plt.title('Decision Tree')
plt.show()

4. 支持向量机(Support Vector Machine, SVM)

支持向量机是一种用于分类和回归的监督学习算法。它通过找到一个最佳的超平面来最大化不同类别之间的间隔,从而进行分类。

实现过程

  1. 选择一组特征和目标变量。
  2. 使用优化算法找到最大化间隔的超平面。
  3. 通过超平面将数据点分为不同类别。

Python代码

python 复制代码
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.svm import SVC

# 生成示例数据
X, y = datasets.make_blobs(n_samples=100, centers=2, random_state=6)

# 创建支持向量机模型并拟合数据
model = SVC(kernel='linear')
model.fit(X, y)

# 绘制数据点和决策边界
plt.scatter(X[:, 0], X[:, 1], c=y, s=30, cmap=plt.cm.Paired)

# 获取超平面
ax = plt.gca()
xlim = ax.get_xlim()
ylim = ax.get_ylim()
xx = np.linspace(xlim[0], xlim[1], 30)
yy = np.linspace(ylim[0], ylim[1], 30)
YY, XX = np.meshgrid(yy, xx)
xy = np.vstack([XX.ravel(), YY.ravel()]).T
Z = model.decision_function(xy).reshape(XX.shape)
ax.contour(XX, YY, Z, colors='k', levels=[-1, 0, 1], alpha=0.5, linestyles=['--', '-', '--'])

plt.title('Support Vector Machine')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.show()

5. K最近邻(K-Nearest Neighbors, KNN)

K最近邻是一种用于分类和回归的非参数监督学习算法。它通过计算待分类样本与训练样本集中所有样本的距离,选择距离最近的k个样本,进行分类或回归。

实现过程

  1. 选择参数k和距离度量方法。
  2. 计算待分类样本与训练样本集所有样本的距离。
  3. 选择距离最近的k个样本,进行投票或平均,得到预测结果。

Python代码

python 复制代码
import numpy as np
import matplotlib.pyplot as plt
from sklearn.neighbors import KNeighborsClassifier

# 生成示例数据
X = np.array([[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]])
y = np.array([0, 0, 1, 1, 1])

# 创建KNN模型并拟合数据
model = KNeighborsClassifier(n_neighbors=3)
model.fit(X, y)

# 进行预测
X_test = np.array([[2, 2], [3, 5]])
y_pred = model.predict(X_test)

# 绘制数据点和预测结果
plt.scatter(X[:, 0], X[:, 1], c=y, s=30, cmap=plt.cm.Paired)
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_pred, s=100, marker='*', cmap=plt.cm.Paired)

plt.title('K-Nearest Neighbors')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.show()
相关推荐
CoovallyAIHub6 小时前
中科大DSAI Lab团队多篇论文入选ICCV 2025,推动三维视觉与泛化感知技术突破
深度学习·算法·计算机视觉
NAGNIP7 小时前
Serverless 架构下的大模型框架落地实践
算法·架构
moonlifesudo8 小时前
半开区间和开区间的两个二分模版
算法
moonlifesudo8 小时前
300:最长递增子序列
算法
CoovallyAIHub13 小时前
港大&字节重磅发布DanceGRPO:突破视觉生成RLHF瓶颈,多项任务性能提升超180%!
深度学习·算法·计算机视觉
CoovallyAIHub13 小时前
英伟达ViPE重磅发布!解决3D感知难题,SLAM+深度学习完美融合(附带数据集下载地址)
深度学习·算法·计算机视觉
聚客AI1 天前
🙋‍♀️Transformer训练与推理全流程:从输入处理到输出生成
人工智能·算法·llm
大怪v1 天前
前端:人工智能?我也会啊!来个花活,😎😎😎“自动驾驶”整起!
前端·javascript·算法
惯导马工1 天前
【论文导读】ORB-SLAM3:An Accurate Open-Source Library for Visual, Visual-Inertial and
深度学习·算法
骑自行车的码农2 天前
【React用到的一些算法】游标和栈
算法·react.js