当前位置: 首页 > news >正文

Python第十五课:机器学习入门 | 从猜想到预测

🎯 本节目标

  1. 理解机器学习两大核心范式(监督/无监督学习)
  2. 掌握特征工程的核心方法论
  3. 实现经典算法:线性回归与K-Means聚类
  4. 开发实战项目:房价预测模型
  5. 理解模型评估与调优基础

一、机器学习核心概念(学生与老师的比喻)

1. 监督学习 vs 无监督学习
类型生活比喻典型算法输入输出
监督学习老师提供标准答案的练习题线性回归/决策树特征数据 + 标签
无监督学习学生自行归纳未标注的笔记K-Means/主成分分析仅特征数据
2. 特征工程:数据的烹饪艺术
  • 特征选择 → 挑选优质食材(如:房价预测中"面积"比"门牌号"更重要)
  • 特征缩放 → 统一食材分量(如:将年龄和收入缩放到同一量纲)
  • 缺失值处理 → 处理腐烂食材(如:用平均值填充缺失的楼层数)

二、监督学习实战:房价预测系统

1. 数据准备(房屋信息示例)
面积(m²)房间数楼层房龄(年)价格(万元)
852510320
1203125480
2. 线性回归模型实现
from sklearn.linear_model import LinearRegression  
import numpy as np  

# 样本数据(面积, 房间数, 房龄)  
X = np.array([[85, 2, 10], [120, 3, 5], [95, 2, 8]])  
# 标签(价格)  
y = np.array([320, 480, 380])  

# 创建并训练模型(类比:老师批改作业)  
model = LinearRegression()  
model.fit(X, y)  

# 预测新数据(面积=100, 房间=3, 房龄=7)  
new_house = np.array([[100, 3, 7]])  
pred_price = model.predict(new_house)  
print(f"预测房价:{pred_price[0]:.1f}万元")  # 输出示例:预测房价:420.3万元  

代码注解

  • fit():模型学习数据规律(学生听课)
  • predict():根据学习成果进行预测(学生考试答题)

三、无监督学习实战:客户分群

1. K-Means聚类算法
from sklearn.cluster import KMeans  
import matplotlib.pyplot as plt  

# 客户消费数据(年消费额, 购买频率)  
data = np.array([  
    [2.5, 8], [3.4, 6], [1.8, 12],  
    [8.1, 2], [9.2, 1], [7.7, 3]  
])  

# 将客户分为2类  
kmeans = KMeans(n_clusters=2)  
kmeans.fit(data)  

# 可视化结果  
plt.scatter(data[:,0], data[:,1], c=kmeans.labels_)  
plt.xlabel('年消费额(万元)')  
plt.ylabel('月均购买次数')  
plt.title('客户消费分群')  
plt.show()  

输出图示

  • 低消费高频次客户(左下角)
  • 高消费低频次客户(右上角)

四、模型评估:考试评分体系

1. 回归模型评估指标
指标公式类比解释
均方误差(MSE)平均(预测值-真实值)^2考试每题分差的平方平均值
R²得分1 - 模型误差/基准误差相比盲猜的进步程度(0~1)
2. 聚类效果评估
  • 轮廓系数:衡量同一簇内紧密程度(-1~1,越大越好)
  • 肘部法则:通过不同K值寻找最佳聚类数量

五、实战项目:房价预测全流程

import pandas as pd  
from sklearn.model_selection import train_test_split  
from sklearn.preprocessing import StandardScaler  

# 1. 加载数据  
df = pd.read_csv('house_prices.csv')  

# 2. 特征处理  
X = df[['area', 'rooms', 'age']]  
y = df['price']  

# 3. 数据标准化(特征缩放)  
scaler = StandardScaler()  
X_scaled = scaler.fit_transform(X)  

# 4. 拆分训练集/测试集(7:3比例)  
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.3)  

# 5. 训练模型  
model = LinearRegression()  
model.fit(X_train, y_train)  

# 6. 评估模型  
train_score = model.score(X_train, y_train)  
test_score = model.score(X_test, y_test)  
print(f"训练集R²:{train_score:.2f},测试集R²:{test_score:.2f}")  

# 示例输出:训练集R²:0.85,测试集R²:0.82  

📚 知识图谱

机器学习三要素:
┌──────────────┬───────────────────────────┐  
|   要素       |          作用             |  
├──────────────┼───────────────────────────┤  
| 数据         | 模型学习的原材料            |  
| 算法         | 从数据中提取规律的方法论     |  
| 算力         | 处理大规模计算的硬件基础     |  
└──────────────┴───────────────────────────┘  

模型选择指南:
| 问题类型       | 推荐算法                 |  
|----------------|--------------------------|  
| 预测数值       | 线性回归/随机森林         |  
| 分类判断       | 逻辑回归/SVM              |  
| 聚类分群       | K-Means/DBSCAN           |  
| 降维可视化     | PCA/t-SNE                |  

🛠️ 课后挑战

  1. 为房价预测添加"地理位置"特征(需先进行独热编码)
  2. 使用K-Means对鸢尾花数据集进行分群(sklearn.datasets.load_iris)
  3. 尝试用决策树模型提升预测准确率

💡 参考答案提示

from sklearn.tree import DecisionTreeRegressor  
tree_model = DecisionTreeRegressor(max_depth=3)  
tree_model.fit(X_train, y_train)  

🚀 下节剧透:《深度学习入门:神经网络解密》
👉 你将解锁:

  • 神经元与激活函数的生物学启示
  • 手写数字识别实战(MNIST数据集)
  • TensorFlow/Keras核心API精讲
  • 可视化神经网络训练过程

相关文章:

  • react基本功
  • After Effects的图钉与关键帧动画
  • STM32之I2C硬件外设
  • Python应用程序健康检查与监控系统的实现
  • Red Hat Enterprise Linux 8.10 正式版
  • elasticsearch商业产品
  • Jmeter使用介绍
  • live555推流服务器异常
  • CAN协议介绍
  • 图像生成-ICCV2019-SinGAN: Learning a Generative Model from a Single Natural Image
  • WebRTC简介
  • JavaJDBC与数据库及底层实现拓展
  • 简洁实用的3个免费wordpress主题
  • 微前端框架 Qiankun 的应用及问题分析
  • CUDA计时函数:精确测量GPU代码执行时间
  • 从零开始用HTML、CSS和JavaScript制作贪吃蛇网页小游戏
  • 责任链模式+策略模式在项目中的实践
  • PostgreSQL 如何有效地处理数据的加密和解密
  • rom定制系列------小米note3 原生安卓15 批量线刷 默认开启usb功能选项 插电自启等
  • Python组合数据类型(一)
  • 做一个b2c网站多少钱/网络营销技能大赛优秀作品
  • 网站的主要内容/湖北疫情最新消息
  • 台州做网站的公司/网站内部seo
  • 开通微信公众号要钱吗/鸡西seo
  • 做网站怎么备份数据/外链发布平台大全
  • 舟山网站建设推荐/整合营销传播的定义