AI开发 - 不用库,直接手写的几个AI算法介绍 Python

很多时候我们学习AI的时候会用到很多第三方库,那么是不是可以不用库就能来联系AI算法呢?当然。

以下是几个可以用 Python 实现的简单 AI 算法,它们不依赖于外部库,适合初学者来理解这些算法:

1. 线性回归(Linear Regression)

线性回归是最简单的回归算法,目标是通过一条直线拟合数据。通过最小二乘法来找出最优的线性关系。

应用场景:
  • 预测任务: 线性回归是最简单的回归模型之一,常用于预测数值型目标变量。例如:

    • 房价预测: 根据面积、位置、房龄等特征预测房屋价格。
    • 销售预测: 根据广告预算、季节性、促销活动等因素预测产品销售额。
    • 气温预测: 根据历史气象数据预测未来的气温。
  • 趋势分析: 用于寻找数据中的线性趋势,揭示变量之间的线性关系。例如:

    • 股票市场分析: 根据历史股价数据分析和预测未来股价走势。
  • 风险评估: 在金融、保险等领域使用线性回归模型评估风险。例如:

    • 信用评分: 根据个人信用历史预测信用分数。
    • 保险定价: 根据个人健康状况、年龄、历史理赔等因素评估投保人风险。
优点:
  • 简单直观,易于理解和实现。
  • 对于线性关系的数据效果较好。
局限:
  • 对于数据中存在非线性关系的任务,线性回归表现较差。
import random

# 创建一些简单的数据
data = [(x, 2*x + 1 + random.uniform(-1, 1)) for x in range(10)]

# 计算平均值
mean_x = sum(x for x, y in data) / len(data)
mean_y = sum(y for x, y in data) / len(data)

# 计算斜率(slope)和截距(intercept)
numerator = sum((x - mean_x) * (y - mean_y) for x, y in data)
denominator = sum((x - mean_x) ** 2 for x, y in data)
slope = numerator / denominator
intercept = mean_y - slope * mean_x

print(f"斜率: {slope}, 截距: {intercept}")

# 使用计算得到的斜率和截距来预测
def predict(x):
    return slope * x + intercept

# 测试预测
for x, y in data:
    print(f"真实值: {y}, 预测值: {predict(x)}")

解释:

  • 生成简单的线性数据,添加了噪声。
  • 使用最小二乘法计算斜率(slope)和截距(intercept),然后进行预测。

为了让结果可视化,我们加入一个图片展示:

 下面是将线性回归的结果可视化的代码,包括绘制数据点和拟合的直线。为了绘制图形,我们使用 matplotlib 库来生成图表,但不需要其他复杂的库,只需要 matplotlib 来显示图形。

如果你没有安装 matplotlib,可以通过以下命令安装:

pip install matplotlib

线性回归与可视化

import random
import matplotlib.pyplot as plt

# 创建一些简单的数据
data = [(x, 2*x + 1 + random.uniform(-1, 1)) for x in range(10)]

# 计算平均值
mean_x = sum(x for x, y in data) / len(data)
mean_y = sum(y for x, y in data) / len(data)

# 计算斜率(slope)和截距(intercept)
numerator = sum((x - mean_x) * (y - mean_y) for x, y in data)
denominator = sum((x - mean_x) ** 2 for x, y in data)
slope = numerator / denominator
intercept = mean_y - slope * mean_x

# 使用计算得到的斜率和截距来预测
def predict(x):
    return slope * x + intercept

# 可视化数据点
x_data = [x for x, y in data]
y_data = [y for x, y in data]

# 绘制数据点
plt.scatter(x_data, y_data, color='blue', label='Data points')

# 绘制拟合的线性回归线
x_range = range(min(x_data), max(x_data)+1)
y_range = [predict(x) for x in x_range]
plt.plot(x_range, y_range, color='red', label=f'Linear fit: y = {slope:.2f}x + {intercept:.2f}')

# 添加标题和标签
plt.title('Linear Regression')
plt.xlabel('X')
plt.ylabel('Y')

# 显示图例
plt.legend()

# 显示图形
plt.show()

代码解释:

  1. 数据生成: 我们生成了一些 (x, y) 数据点,其中 y 是根据线性关系 y = 2x + 1 生成的,但加入了一些随机噪声。
  2. 线性回归计算: 使用最小二乘法来计算直线的斜率(slope)和截距(intercept)。
  3. 绘制图形:
    • 使用 matplotlib.pyplot.scatter 绘制原始数据点。
    • 使用 matplotlib.pyplot.plot 绘制拟合的线性回归直线。
  4. 图形展示: 添加了标题、轴标签和图例,并显示最终的图形。

图片解读

  • 蓝色点表示数据点。
  • 红色线表示拟合的线性回归直线。
  • 你可以修改菜蔬来使得预测和蓝点偏离,这样可以更直观的理解拟合

上面这段代码不仅计算并展示了线性回归的结果,还通过图形化的方式展示了模型的拟合效果。

2. K-近邻算法(K-NN)

K-近邻是一个简单的分类算法,它通过计算样本点之间的距离来分类。

应用场景:
  • 分类任务: K-NN 是一种基于实例的学习算法,适用于小数据集的分类任务。例如:

    • 手写数字识别: 识别手写数字(如MNIST数据集中的数字)。</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值