前言本文基于本学期 Python 数据分析与机器学习课程内容从基础编程、数据处理、网络爬虫、机器学习建模到综合实战项目完整实现从数据获取到模型落地的全流程同时分享课程学习总结与多个实战案例。一、环境准备依赖库一键安装打开终端执行以下命令一次性安装所有所需库bash运行pip install pandas numpy matplotlib requests lxml wordcloud itchat scikit-learn opencv-python pytesseract技术栈说明数据处理Pandas数据读取、清洗、统计、NumPy数值计算可视化Matplotlib图表绘制、WordCloud词云生成爬虫Requests网络请求、XPath网页解析机器学习Scikit-LearnKNN、决策树等算法图像处理OpenCV车牌定位、PytesseractOCR 识别二、课程学习过程总结整个课程学习分为四大阶段层层递进、逐步进阶每一个阶段都为后续实战打下坚实基础。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(hotReloadTrue) # 获取所有好友信息 friends itchat.get_friends(updateTrue)[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_pathsimhei.ttf, background_colorwhite, width800, height600 ).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, headersheaders) 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[classread-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, indexFalse, encodingutf-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_size0.3, random_state42) # 遍历不同K值计算模型准确率 k_range range(1, 21) train_accuracy [] test_accuracy [] for k in k_range: knn_model KNeighborsClassifier(n_neighborsk) 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, markero, label训练集准确率) plt.plot(k_range, test_accuracy, markers, 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, keycv2.contourArea, reverseTrue)[: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), dtypefloat32) s pts.sum(axis1) rect[0] pts[np.argmin(s)] rect[2] pts[np.argmax(s)] diff np.diff(pts, axis1) 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]], dtypefloat32) 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_whitelist0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ plate_text pytesseract.image_to_string(thresh, configcustom_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, cmapgray), plt.title(二值化结果) plt.show() else: print(未检测到车牌区域请检查图像质量)五、学习总结与心得通过本学期课程的学习我系统掌握了 Python 数据分析与机器学习的全流程技能从最基础的语法编程到数据处理、爬虫获取数据再到机器学习模型的搭建与优化每一步都离不开理论与实战的结合。实战项目不仅让我巩固了知识更让我理解了数据分析的核心逻辑数据质量决定分析上限模型调优依赖业务理解。后续我将继续深入学习机器学习进阶算法提升模型优化与项目落地能力将所学知识应用到更多实际场景中。