news 2026/4/24 17:41:33

学习总结及学习案例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
学习总结及学习案例

前言

本文基于本学期 Python 数据分析与机器学习课程内容,从基础编程、数据处理、网络爬虫、机器学习建模到综合实战项目,完整实现从数据获取到模型落地的全流程,同时分享课程学习总结与多个实战案例。


一、环境准备

依赖库一键安装

打开终端执行以下命令,一次性安装所有所需库:

bash

运行

pip install pandas numpy matplotlib requests lxml wordcloud itchat scikit-learn opencv-python pytesseract

技术栈说明

  • 数据处理:Pandas(数据读取、清洗、统计)、NumPy(数值计算)
  • 可视化:Matplotlib(图表绘制)、WordCloud(词云生成)
  • 爬虫:Requests(网络请求)、XPath(网页解析)
  • 机器学习:Scikit-Learn(KNN、决策树等算法)
  • 图像处理:OpenCV(车牌定位)、Pytesseract(OCR 识别)

二、课程学习过程总结

整个课程学习分为四大阶段,层层递进、逐步进阶,每一个阶段都为后续实战打下坚实基础。

1. Python 基础夯实

主要学习 Python 基础语法、变量、循环、函数、文件操作等核心知识,熟练掌握 Python 编程逻辑,为后续数据处理、爬虫编写、模型构建筑牢编程根基,解决了 “不会写代码” 的入门难题。

2. 数据处理与可视化核心学习

重点掌握了 Pandas、NumPy 两大数据处理工具,学会数据读取、清洗、筛选、缺失值处理、数据聚合等操作,能高效规整杂乱数据;同时学习 Matplotlib、WordCloud 等可视化库,实现数据的图表展示与词云分析,明白 “数据处理是数据分析的核心前提”,优质的数据预处理能大幅提升后续分析与建模效果。

3. 网络爬虫实战学习

掌握 Requests 库发起网络请求、XPath 进行网页数据解析,学会设置请求头规避基础反爬,能批量爬取网页文本、列表等数据,并实现数据持久化保存,解决了数据分析中 “数据从哪里来” 的问题,实现自主获取数据源。

4. 机器学习核心学习

从监督学习、无监督学习基础理论入手,掌握 KNN、决策树、逻辑回归等经典算法,理解模型训练、数据集划分、模型评估、过拟合与欠拟合的原理及解决方法,能利用 Scikit-Learn 库搭建简单机器学习模型,完成分类、预测等任务,实现从数据到模型的落地。


三、往期课程实战项目回顾

(一)微信好友数据分析实战

通过 itchat 库获取微信好友信息,对好友性别、个性签名等数据进行分析与可视化,直观了解微信好友数据特征。

python

运行

# 导入核心库 import itchat import pandas as pd import matplotlib.pyplot as plt from wordcloud import WordCloud import re # 登录微信,开启热重载 itchat.auto_login(hotReload=True) # 获取所有好友信息 friends = itchat.get_friends(update=True)[1:] # 提取好友核心信息并存储为DataFrame friend_list = [] for friend in friends: friend_info = { '昵称': friend['NickName'], '性别': friend['Sex'], '省份': friend['Province'], '个性签名': friend['Signature'] } friend_list.append(friend_info) df = pd.DataFrame(friend_list) # 1. 微信好友性别分布可视化 sex_count = df['性别'].value_counts() sex_name = ['未知', '男性', '女性'] plt.rcParams['font.sans-serif'] = ['SimHei'] plt.bar(sex_name, sex_count.values, color=['lightgray', 'skyblue', 'pink']) plt.title('微信好友性别分布') plt.ylabel('人数') plt.show() # 2. 微信好友个性签名词云生成 signature_list = [] for sign in df['个性签名']: sign_str = re.sub(r'[^\u4e00-\u9fa5]', '', str(sign)) if sign_str: signature_list.append(sign_str) all_signature = ' '.join(signature_list) wc = WordCloud( font_path='simhei.ttf', background_color='white', width=800, height=600 ).generate(all_signature) plt.imshow(wc) plt.axis('off') plt.title('微信好友个性签名词云') plt.show()

(二)网页数据爬虫实战

针对静态网页,编写爬虫代码批量爬取目标网页数据,实现数据自主采集与本地保存。

python

运行

# 导入核心库 import requests from lxml import etree import pandas as pd # 目标网页URL url = 'https://blog.csdn.net/nav/python' # 请求头,模拟浏览器访问 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36' } # 发起网络请求获取网页源码 response = requests.get(url, headers=headers) response.encoding = 'utf-8' html = etree.HTML(response.text) # XPath解析网页,提取文章标题和阅读量 article_items = html.xpath('//div[contains(@class,"list-item")]') data_list = [] for item in article_items: title = item.xpath('.//h3/a/text()') read_num = item.xpath('.//span[@class="read-count"]/text()') title_str = title[0].strip() if title else '无标题' read_str = read_num[0].strip() if read_num else '0阅读' data_list.append({ '文章标题': title_str, '阅读量': read_str }) # 数据保存为CSV文件 result_df = pd.DataFrame(data_list) result_df.to_csv('CSDNPython博客数据.csv', index=False, encoding='utf-8-sig') print('数据爬取完成,已保存至本地CSV文件') print(result_df.head())

(三)机器学习小考实战 - KNN 模型拟合效果分析

基于鸢尾花数据集搭建 KNN 分类模型,分析不同 K 值对模型拟合效果的影响。

python

运行

# 导入核心库 from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier from sklearn.metrics import accuracy_score import matplotlib.pyplot as plt # 加载鸢尾花数据集 iris = load_iris() X, y = iris.data, iris.target # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # 遍历不同K值,计算模型准确率 k_range = range(1, 21) train_accuracy = [] test_accuracy = [] for k in k_range: knn_model = KNeighborsClassifier(n_neighbors=k) knn_model.fit(X_train, y_train) # 训练集准确率 y_train_pred = knn_model.predict(X_train) train_acc = accuracy_score(y_train, y_train_pred) train_accuracy.append(train_acc) # 测试集准确率 y_test_pred = knn_model.predict(X_test) test_acc = accuracy_score(y_test, y_test_pred) test_accuracy.append(test_acc) # 绘制准确率变化曲线 plt.rcParams['font.sans-serif'] = ['SimHei'] plt.plot(k_range, train_accuracy, marker='o', label='训练集准确率') plt.plot(k_range, test_accuracy, marker='s', label='测试集准确率') plt.xlabel('K值') plt.ylabel('准确率') plt.title('KNN模型不同K值拟合效果分析') plt.legend() plt.show()

四、新课程实战案例 - 车牌识别系统

基于 OpenCV 与 Tesseract-OCR 实现车牌定位与字符识别,完整复现从图像预处理到字符识别的全流程。

python

运行

# 导入核心库 import cv2 import numpy as np import pytesseract from matplotlib import pyplot as plt # 加载车牌图像 img = cv2.imread('car_plate.jpg') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 图像预处理:高斯模糊+边缘检测 blur = cv2.GaussianBlur(gray, (5, 5), 0) edges = cv2.Canny(blur, 50, 150) # 轮廓检测定位车牌 contours, _ = cv2.findContours(edges.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) contours = sorted(contours, key=cv2.contourArea, reverse=True)[:10] plate_contour = None for c in contours: peri = cv2.arcLength(c, True) approx = cv2.approxPolyDP(c, 0.02 * peri, True) if len(approx) == 4: plate_contour = approx break # 透视矫正 if plate_contour is not None: pts = plate_contour.reshape(4, 2) rect = np.zeros((4, 2), dtype="float32") s = pts.sum(axis=1) rect[0] = pts[np.argmin(s)] rect[2] = pts[np.argmax(s)] diff = np.diff(pts, axis=1) rect[1] = pts[np.argmin(diff)] rect[3] = pts[np.argmax(diff)] (tl, tr, br, bl) = rect widthA = np.sqrt(((br[0] - bl[0]) ** 2) + ((br[1] - bl[1]) ** 2)) widthB = np.sqrt(((tr[0] - tl[0]) ** 2) + ((tr[1] - tl[1]) ** 2)) maxWidth = max(int(widthA), int(widthB)) heightA = np.sqrt(((tr[0] - br[0]) ** 2) + ((tr[1] - br[1]) ** 2)) heightB = np.sqrt(((tl[0] - bl[0]) ** 2) + ((tl[1] - bl[1]) ** 2)) maxHeight = max(int(heightA), int(heightB)) dst = np.array([ [0, 0], [maxWidth - 1, 0], [maxWidth - 1, maxHeight - 1], [0, maxHeight - 1]], dtype="float32") M = cv2.getPerspectiveTransform(rect, dst) warped = cv2.warpPerspective(img, M, (maxWidth, maxHeight)) warped_gray = cv2.cvtColor(warped, cv2.COLOR_BGR2GRAY) # 二值化处理 _, thresh = cv2.threshold(warped_gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU) # OCR字符识别 custom_config = r'--oem 3 --psm 8 -c tessedit_char_whitelist=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' plate_text = pytesseract.image_to_string(thresh, config=custom_config) print(f"识别到的车牌号码:{plate_text.strip()}") # 可视化结果 plt.subplot(131), plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)), plt.title('原图') plt.subplot(132), plt.imshow(cv2.cvtColor(warped, cv2.COLOR_BGR2RGB)), plt.title('车牌定位') plt.subplot(133), plt.imshow(thresh, cmap='gray'), plt.title('二值化结果') plt.show() else: print("未检测到车牌区域,请检查图像质量")

五、学习总结与心得

通过本学期课程的学习,我系统掌握了 Python 数据分析与机器学习的全流程技能,从最基础的语法编程,到数据处理、爬虫获取数据,再到机器学习模型的搭建与优化,每一步都离不开理论与实战的结合。

实战项目不仅让我巩固了知识,更让我理解了数据分析的核心逻辑:数据质量决定分析上限,模型调优依赖业务理解。后续我将继续深入学习机器学习进阶算法,提升模型优化与项目落地能力,将所学知识应用到更多实际场景中。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/24 17:38:33

用51单片机做个迷你风扇?手把手教你PWM调速直流电机(附完整代码)

用51单片机打造智能迷你风扇:PWM调速实战指南 夏日的闷热总让人渴望一丝清凉,而自己动手制作一个可调速的迷你风扇不仅能解暑,还能深入理解PWM电机控制技术。本文将带你从零开始,用51单片机和直流电机打造一个智能调速风扇系统。不…

作者头像 李华
网站建设 2026/4/24 17:38:20

如何轻松去除视频硬字幕?Video-subtitle-remover终极指南

如何轻松去除视频硬字幕?Video-subtitle-remover终极指南 【免费下载链接】video-subtitle-remover 基于AI的图片/视频硬字幕去除、文本水印去除,无损分辨率生成去字幕、去水印后的图片/视频文件。无需申请第三方API,本地实现。AI-based tool…

作者头像 李华
网站建设 2026/4/24 17:33:25

5分钟快速上手:Windows任务栏实时股票监控终极指南

5分钟快速上手:Windows任务栏实时股票监控终极指南 【免费下载链接】TrafficMonitorPlugins 用于TrafficMonitor的插件 项目地址: https://gitcode.com/gh_mirrors/tr/TrafficMonitorPlugins 想在Windows任务栏上实时追踪股票行情,又不想安装臃肿…

作者头像 李华
网站建设 2026/4/24 17:32:52

Hermes Agent 和 OpenClaw 怎么选?功能对比、适用场景与安装指南

最近一段时间,Agent 圈子里讨论度很高的一个名字,就是 Hermes Agent。不少人把它看成新一代 AI 助手框架:能调工具、能做自动化、能跑任务,还试图把“聊天机器人”真正推进到“可执行代理”的阶段。 但问题也很现实:He…

作者头像 李华
网站建设 2026/4/24 17:31:24

2019年数据科学在线课程评估与学习路径指南

1. 2019年数据科学在线课程全景分析作为从业十年的数据科学家,我每年都会系统评估各类在线教育平台的数据科学课程。2019年堪称在线数据科学教育的分水岭——Coursera推出专项课程认证、edX上线微软专业纳米学位、KaggleLearn开始提供交互式编程环境。这些变化彻底重…

作者头像 李华