(四)人工智能之机器学习

目录

(一)机器学习基础

(二)简单线性回归

2.1、导入必要的库

2.2、准备数据

2.3、训练模型

2.4、做出预测

2.5、评估模型

2.6、可视化结果

 (三)总结

引言

在上一章节,介绍了Python的基础知识,帮助你了解了变量、数据类型、函数等。已经初步熟悉编写和运行Python代码的基本技能,本章节介绍机器学习相关知识及应用

(一)机器学习基础


机器学习是人工智能的一个分支,旨在让计算机从数据中学习并做出预测或决策。这里将从基础概念入手,结合简单的代码例子,带你一步步学习机器学习。

1、基本概念
数据集:训练机器学习模型的数据,通常分为训练集和测试集
特征:用于预测目标值的输入变量
目标值:模型试图预测的输出
模型:从数据中学习到的数学表示,用于做出预测

(二)简单线性回归

上章节已对线性回归做详细的介绍,本章节再次使用一个简单的例子来说明机器学习的基本步骤。假设我们有一些关于一个省份房子的面积和价格的数据,我们想预测新的房子的价格。

2.1、导入必要的库

import numpy as np  # 导入数值计算库
import matplotlib.pyplot as plt  # 导入绘图库
from sklearn.model_selection import train_test_split  # 导入数据集划分工具
from sklearn.linear_model import LinearRegression  # 导入线性回归模型
from sklearn.metrics import mean_squared_error  # 导入均方误差计算工具

2.2、准备数据

# 生成一些模拟数据
np.random.seed(0)   # 设置随机种子以确保结果可复现
X = 2 * np.random.rand(100, 1)  # 生成100个房子面积的随机数据点
y = 6 + 3 * X + np.random.randn(100, 1)  # 房子价格(目标值)

# 将数据集分为训练集和测试集
#random_state是确保每次运行时分割结果相同
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

np.random.send(0) 代码解析:

 是用来设置 NumPy 的随机数生成器的种子。

简单来说:

就比如一本厚厚的电话簿。你随便打开一页,然后从这一页开始读号码。这本书里有很多号码,但如果你每次都从同一页开始读,你每次读到的号码顺序都是一样的。随机数种子就像告诉计算机“从哪一页开始读”的书签。

设置随机数种子的目的:
在编程中,有时候我们希望每次运行代码时得到相同的随机数序列。这样做可以帮助我们在调试代码或分享结果时确保一致性。

代码实例:

import numpy as np

# 不设置随机数种子
random_numbers_1 = np.random.rand(5)
print("第一次生成的随机数:", random_numbers_1)

# 再次生成随机数,没有设置种子
random_numbers_2 = np.random.rand(5)
print("第二次生成的随机数:", random_numbers_2)

# 设置随机数种子为0
np.random.seed(0)
random_numbers_3 = np.random.rand(5)
print("设置种子为0生成的随机数:", random_numbers_3)

# 再次设置相同的随机数种子为0
np.random.seed(0)
random_numbers_4 = np.random.rand(5)
print("再次设置种子为0生成的随机数:", random_numbers_4)

运行结果:
第一次生成的随机数: [0.5488135  0.71518937 0.60276338 0.54488318 0.4236548 ]
第二次生成的随机数: [0.64589411 0.43758721 0.891773   0.96366276 0.38344152]
设置种子为0生成的随机数: [0.5488135  0.71518937 0.60276338 0.54488318 0.4236548 ]
再次设置种子为0生成的随机数: [0.5488135  0.71518937 0.60276338 0.54488318 0.4236548 ]

np.random.rand(100, 1) 代码解释:

将生成一个形状为 的二维数组,其中包含100个随机数,每个随机数在 [0, 1) 范围内。输出结果为一个100行1列的二维数组。(上章节已经提到,在某些机器学习算法(如线性回归)中,输入数据通常被要求是二维数组)

以下为输出结果:

import numpy as np
# 生成一个形状为 (10, 1) 的二维数组,包含10个随机数,每个随机数在 [0, 1) 范围内
random_numbers = np.random.rand(10, 1)
print(random_numbers)
输出结果:
[[0.41919451]
 [0.6852195 ]
 [0.20445225]
 [0.87811744]
 [0.02738759]
 [0.67046751]
 [0.4173048 ]
 [0.55868983]
 [0.14038694]
 [0.19810149]]

np.random.rand生成随机数常用常用函数库:

np.random.randint 可以生成指定范围内的随机整数

np.random.randn 可以生成负数,并且数值会围绕 0 分布

np.random.rand 生成 [0, 1) 范围内的均匀分布的随机数。

2.3、训练模型

# 创建线性回归模型实例
lin_reg = LinearRegression()
# 用训练集数据训练模型
lin_reg.fit(X_train, y_train)

2.4、做出预测

# 用测试集数据做出预测
#y_pred为预测出结果
y_pred = lin_reg.predict(X_test)

2.5、评估模型

# 计算均方误差
mse = mean_squared_error(y_test, y_pred)
print(f"均方误差: {mse}")

均方误差(Mean Squared Error, MSE)是一个常用的评价回归模型预测效果的指标。它量化了预测值与实际值之间的差异。均方误差越小,表示模型的预测结果与实际值越接近。

2.6、可视化结果

# 绘制数据点和预测线
plt.scatter(X, y, color='blue', label='数据点')
plt.plot(X_test, y_pred, color='red', label='预测线')
plt.xlabel('房子面积')
plt.ylabel('房子价格')
plt.legend()
plt.show()

 可视化结果展示:

 (三)总结

通过线性回归简单的例子,我们介绍了机器学习的基本步骤:准备数据、训练模型、做出预测和评估模型,可进一步深入了解机器学习。

  • 12
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淘金铲

你的鼓励将是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值