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

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

1. 线性回归(Linear Regression)

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

实现过程

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

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代码

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代码

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代码

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代码

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()
  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值