🌟 初识机器学习
🤔 什么是机器学习?
机器学习是让计算机从数据中学习规律,并做出预测或决策的技术。
就像教孩子认识动物一样,我们给计算机 “看” 大量数据,它就能学会识别模式和做出判断。
💡 为什么要学机器学习?
- 自动化处理重复性决策任务
- 从海量数据中发现隐藏规律
- 构建智能预测系统
- 未来最具竞争力的技能之一
接下里我将展示一些简单的例子,带你走进机器学习的世界
🎁 完整项目和数据集:Gitee仓库
🛠️ 环境准备
关于虚拟环境前文已有详细讲解 ⚠️ Python 环境乱成一锅粥?Conda 向你展示神力!
老规矩:激活 conda、创建该项目的虚拟环境、进入新环境、下载 sklearn 和 pandas
activate
conda create --name sklearn python==3.6.3
activate sklearn
pip install sklearn -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
📈 一元线性回归
案例:学习时长 vs 考试成绩
1.观察数据集
要求:根据学习时长预测学习成绩
聚集后两列,这个数据集十分简单,就是学习时长与成绩之间的关系,观察易发现,学习成绩大约是学习时长的 10 倍左右,呈线性分布。
2.取出关键数据
取出时长和成绩两列,用来给后续的机器模型 “学习”
X_data = data.loc[:, ['Hours']].values # 学习时长
Y_data = data['Scores'].values # 学习成绩
3.创建模型
直接导入现成的模型并训练
regressor = LinearRegression() # 创建 regressor
regressor = regressor.fit(X_data, Y_data) # 用 fit 方法对训练集进行训练
4.模拟数据并预测
假设有五个人他们的学习时长分别为 6.8,1.3,3.4,8.8,9.5 小时
让我们来期待一下上面这个机器模型给出的每个人的预测成绩
# 模拟需要预测的数据
test = [[6.8], [1.3], [3.4], [8.8], [9.5]]
# 预测
Y_pred = regressor.predict(test)
print(Y_pred)
5.预测结果展示
输出跟之前的假设一样:学习成绩为学习时长的 10 倍左右。说明该模型预测的结果具有一定可信度
💡 关键理解:
- 模型学会了 “考试成绩 ≈ 10 × 学习时长” 的规律
- 可用于预测新的学习时长对应的成绩
6.完整代码
# 根据学习时长预测成绩
import pandas as pd
# 导入sklearn的线性回归方法
from sklearn.linear_model import LinearRegression
# 定位到数据集
data = pd.read_csv('dataset/studentscores.csv')
X_data = data.loc[:, ['Hours']].values # 传入学习时长
# 或者 X_data = data.iloc[:, 1:2].values
# 或者 X_data = np.array(data.loc[:, 'Hours']).reshape(-1, 1)
Y_data = data['Scores'].values # 传入学习成绩
# print(X_data)
regressor = LinearRegression() # 创建 regressor
regressor = regressor.fit(X_data, Y_data) # 用 fit 方法对训练集进行训练
# 让上面这个训练好的模型预测一些数据, 使用predi函数
# 模拟需要预测的数据
test = [[6.8], [1.3], [3.4], [8.8], [9.5]]
# 预测
Y_pred = regressor.predict(test)
print(Y_pred)
📊 多元线性回归
案例:薪资&年龄 vs 贷款额度
是不是觉得上一个例子太过简单,那么接下来加点小难度,多加一个维度的训练数据(多元)
1.观察数据集
要求:根据薪资和年龄,预测出可贷款额度。
该多元线性回归的例子,拥有两个判断条件(薪资和年龄),观察易知,依然呈现线性关系。
2.取出训练数据
# 定位到数据集
data = pd.read_csv('dataset/loans.csv')
X_data = data[['salary', 'age']].values # X数据为工资年龄两列, 手动构成二维列表
Y_data = data['loans'].values
3.创建模型
根据观察数据集发现,该例子仍可以使用线性机器模型
# 训练代码不变
regressor = LinearRegression()
regressor = regressor.fit(X_data, Y_data)
4.预测训练集
输入原数据表的薪资和年龄两列,看看这个机器模型会给我们多少 “贷款额度”
# 预测训练集
Y_pred = regressor.predict(X_data)
print(Y_pred)
运行程序,发现预测结果与原表 loans 列数据接近,说明该模型具有一定可信度。
5.模拟数据并预测
手动写入一个薪资 10000,年龄 30 的数据,继续看看该机器模型会给我们多少 “贷款额度”
# 自定义数据预测
test_data = [[10000,30]]
test_pred = regressor.predict(test_data)
print(test_pred)
数据依然合理,说明该机器模型具有一定的健壮性。
6.绘制可视化图表
1.下载 matplotlib 库
pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
2.绘制图表
# 散点图排序版
x = sorted(data['salary'])
y = sorted(Y_pred)
plt.plot(x, y, color = 'blue')
plt.show()
运行程序后发现,这样更能直观的看出线性关系。
🎯 下期预告
- 逻辑回归:解决分类问题(如判断邮件是否垃圾邮件、判断某人是否会做某事等)
- 分类算法:KNN、决策树等更强大的模型
- 模型评估:如何判断模型的好坏?
🚀 现在就开始你的机器学习之旅吧!有任何问题欢迎在评论区留言讨论~