前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >探秘机器学习算法:智慧背后的代码逻辑

探秘机器学习算法:智慧背后的代码逻辑

作者头像
星辰与你
发布2024-11-15 08:37:33
00
发布2024-11-15 08:37:33
举报
文章被收录于专栏:学习

1、 线性回归

线性回归是预测连续变量的一种简单而有效的方法。其数学模型假设因变量 y 与自变量 x 之间存在线性关系,用公式表示为:

Python代码实现

代码语言:javascript
复制
import numpy as np
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt

# 创建数据
X = np.array([[1], [2], [3], [4], [5]])
y = np.array([1, 2, 1.3, 3.75, 2.25])

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

# 预测
predicted = model.predict(X)

# 可视化
plt.scatter(X, y, color='black')
plt.plot(X, predicted, color='blue', linewidth=2)
plt.xlabel("X")
plt.ylabel("y")
plt.title("Linear Regression")
plt.show()

2、 逻辑回归

逻辑回归用于分类问题,其目标是预测数据点属于某一类的概率。模型输出值在 000 到 111 之间。公式为:

Python代码实现

代码语言:javascript
复制
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
import numpy as np

# 加载数据集
data = load_iris()
X = data.data[:100, :2]  # 只取两个特征方便可视化
y = data.target[:100]

# 创建模型并训练
model = LogisticRegression()
model.fit(X, y)

# 可视化决策边界
x_min, x_max = X[:, 0].min() - .5, X[:, 0].max() + .5
y_min, y_max = X[:, 1].min() - .5, X[:, 1].max() + .5
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02),
                     np.arange(y_min, y_max, 0.02))
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)

plt.contourf(xx, yy, Z, cmap=plt.cm.Paired, alpha=0.8)
plt.scatter(X[:, 0], X[:, 1], c=y, edgecolors='k', marker='o')
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
plt.title("Logistic Regression Decision Boundary")
plt.show()

3 、K近邻算法 (KNN)

KNN是一个简单的分类算法,其核心思想是通过找出距离最近的K个邻居来判断类别。适用于非线性分类问题,但当数据量较大时计算量会增大。

Python代码实现

代码语言:javascript
复制
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
import numpy as np

# 加载数据集
data = load_iris()
X = data.data[:, :2]
y = data.target

# 创建模型并训练
model = KNeighborsClassifier(n_neighbors=5)
model.fit(X, y)

# 可视化决策边界
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02),
                     np.arange(y_min, y_max, 0.02))
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)

plt.contourf(xx, yy, Z, alpha=0.8)
plt.scatter(X[:, 0], X[:, 1], c=y, edgecolor='k')
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
plt.title("K-Nearest Neighbors Decision Boundary")
plt.show()

4、 支持向量机 (SVM)

支持向量机通过找到一个超平面将数据分开,以最大化边界的间隔。适用于线性或非线性分类问题,依赖于合适的核函数。

Python代码实现

代码语言:javascript
复制
from sklearn.svm import SVC
from sklearn.datasets import load_iris
import numpy as np
import matplotlib.pyplot as plt

# 加载数据集
data = load_iris()
X = data.data[:, :2]  # 取前两个特征
y = data.target

# 创建模型并训练
model = SVC(kernel='linear')
model.fit(X, y)

# 可视化决策边界
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02),
                     np.arange(y_min, y_max, 0.02))
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)

plt.contourf(xx, yy, Z, alpha=0.8)
plt.scatter(X[:, 0], X[:, 1], c=y, edgecolors='k')
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
plt.title("Support Vector Machine Decision Boundary")
plt.show()

5、 决策树

决策树通过递归地将数据划分成多个子集来进行分类。其关键在于选择特征并确定划分点,直到每个节点满足条件或达到最大深度。

Python代码实现

代码语言:javascript
复制
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
import numpy as np

# 加载数据集
data = load_iris()
X = data.data[:, :2]
y = data.target

# 创建模型并训练
model = DecisionTreeClassifier(max_depth=3)
model.fit(X, y)

# 可视化决策边界
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02),
                     np.arange(y_min, y_max, 0.02))
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)

plt.contourf(xx, yy, Z, alpha=0.8)
plt.scatter(X[:, 0], X[:, 1], c=y, edgecolors='k')
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
plt.title("Decision Tree Decision Boundary")
plt.show()

6、 随机森林

随机森林通过组合多个决策树来增强分类性能。每棵树独立训练,最终分类结果取投票的结果。

Python代码实现

代码语言:javascript
复制
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
import numpy as np
import matplotlib.pyplot as plt

# 加载数据集
data = load_iris()
X = data.data[:, :2]
y = data.target

# 创建模型并训练
model = RandomForestClassifier(n_estimators=100, max_depth=3, random_state=0)
model.fit(X, y)

# 可视化决策边界
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max
代码语言:javascript
复制
我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=2oul0hvapjsws
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-11-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、 线性回归
  • 2、 逻辑回归
  • 3 、K近邻算法 (KNN)
  • 4、 支持向量机 (SVM)
  • 5、 决策树
  • 6、 随机森林
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档