# AI13期_文档代码集合
**Repository Path**: Outins/ai13_code_collection
## Basic Information
- **Project Name**: AI13期_文档代码集合
- **Description**: 包含一些传统图像处理方法和经典的机器学习方法
- **Primary Language**: Python
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 3
- **Forks**: 2
- **Created**: 2019-03-04
- **Last Updated**: 2021-01-18
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 1 机器学习项目
### 1.1 监督学习
- 【线性回归】: Capital Bikeshare 共享单车数据,利用结构化数据中包含每天的日期天气地区等信息,构建 OLS 最小二乘线性回归模型 / Ridge 岭回归模型 / Lasso 模型 / ElasticNet 弹性网络模型,并使用 RMSE / MAE / R² 分数作为评价指标,进行每天的共享单车骑行量预测。
- 【Logistic回归】: Pima Indians Diabetes Data Set 皮马印第安人糖尿病数据集,在 EDA 探索性数据分析和 FE 特征工程的基础上,采用 5 折交叉验证,分别用负 log 似然损失 / accuracy 正确率 / 混淆矩阵作为评价指标,对 Logistic 回归模型其 L1 / L2 正则超参数进行调优,以此预测 5 年内皮马印第安人糖尿病发作的概率。
- 【支持向量机】: Otto Group Product Classification Challenge 奥托集团商品分类数据集,对于 93 维的数值型特征样本进行商品 9 种分类,为此构建线性 SVM 模型 LinearSVC / RBF核 SVM模型 SVC,同样采用 5 折交叉验证,以正确率作为评价指标,使用网格搜索对正则参数 C / 核函数宽度 gamma 进行超参数调优,以此完成商品分类。
- 【集成学习】: Happy Customer Bank 目标客户识别,这是来自于 Data Hackathon 的金融行业任务,根据客户的 24 维特征属性,预测银行对其发放贷款的概率。其中,利用基于 Boosting 算法的 XGBoost 和 LightGBM 模型,分别使用交叉验证和网格搜索进行模型超参数调优,通过寻找最优基学习器数目 / 树的深度 / 叶子节点数目等参数,最后完成预测,并对最终模型给出特征重要性排序。
### 1.2 非监督学习
- 【聚类/降维】:中国企业文本描述分类,数据集由 CSDN-AI100 “文因互联”比赛所提供,根据企业的文字描述文本对企业进行分类,类别标签 1~10 。在文本预处理阶段,数据清洗采用 re 模块正则表达式和 Jieba 工具包进行文本分词、停用词过滤与关键词提取,之后对语料库使用 PCA 降维,再采用词袋法对文本进行向量表示,最后送入 KMeans 模型进行聚类分析,并采用 t-SNE 可视化。
---
## 2 计算机视觉项目
### 2.1 传统图像处理
- 【图像预处理】:基于 OpenCV 3.0 版本采用 Python 语言,针对 Lena 图像进行 RGB / HSV 分量分解,完成平均 / 高斯 / 中值滤波去噪处理,以及图像形态学基于膨胀腐蚀的开闭运算操作,并使用 Sobel / Canny 算子进行边缘检测,最后使用灰度直方图 / 大津算法 / 区域生长法分割目标和背景。
- 【视觉特征提取】:对于米粒图片先图像预处理后,计算其灰度直方图,进一步使用大津算法进行分割,最终得到各区域米粒的最小包围矩阵,也就是面积长度等信息,分析落在 3 sigma 范围内米粒的数量。另外的,对于棋盘格图像,利用尺度不变性识别复杂图片角点特征,分别使用 Harris 算子检测角点,以及 SIFT 、 FAST 及 ORB 检测提取图像特征描述符。
- 【运动估计与目标跟踪】:基于混合高斯模型的背景提取算法,提取前景并显示二值化图像,并将前景目标进行分割使用不同颜色矩形框标记,并输出每个矩形框的位置和大小。其次使用光流估计方法,计算运动目标特征点,进一步对特征点进行稀疏 / 稠密 LK 光流的运动轨迹输出。
### 2.2 深度学习入门
- 【全连接神经网络】:对于 MNIST 手写识别数字数据集进行相关数据探索后,在线性分类感知器的基础上,使用 TensorFlow 搭建了四层全连接神经网络,其中隐层节点数量分别为 256 与 64。然后,其网络参数的学习率初始值为 0.3 并进行 0.01 eta 指数衰减。此外,优化算法采用 SGD 随机梯度下降优化器,训练 batch size 为 128、training step 为 20000 次,最后该神经网络使得手写数字识别准确率达到 98.25%。
---
## 3 推荐系统项目
### 3.1 用户画像方法
- 【协同过滤】: Million Song Dataset 公开音乐数据集,其包含七个知名国外音乐社区的数据,需要根据用户与物品之间的历史关系进行推荐。分别采用基于用户 / 物品 / SVD矩阵分解的协同过滤算法,通过对用户歌曲和播放次数的三元组数据,计算用户与用户之间以及不同音乐之间的相似矩阵,并建立倒排索引加速查询,从而预测用户对音乐的打分。最后,采用准确率和召回率对算法性能进行评价,以此判断推荐歌曲的质量高低。
### 3.2 深度学习模型
- 【点击率预估】: Display Advertising Challenge 广告CTR预估数据集,由 CriteoLabs 广告公司在 Kaggle 竞赛平台举办,其中 4000w 的训练集是连续 10 天的 Criteo 广告展示数据,里面包含点击和非点击两类事件,以及 13 维数值型特征和 26 维类别型特征,而 500w 的测试集则是第 11 天的广告展示数据。利用 TensorFlow 以 400 条数据为单位进行批量读取,然后对类别型稀疏列值使用 hash 自动映射作为 Wide 部分,而对数值型连续列值则构建实数特征作为 Deep 部分。之后再对类别型进行高阶特征组合,同时进行 Embedding 操作,最后送入深度神经网络分类器,其隐藏层为 100 、 50 和 25 三层。除此之外,剩下的部分输入到逻辑回归 LR 中,其整个 Wide & Deep 模型的评价指标为 Logloss。
---
## 4 相关平台及工具包使用
- 【平台】:Jupyter Notebook、PyCharm
- 【数据处理包】:Pandas、NumPy、SciPy
- 【数据可视化包】:Matplotlib、Seaborn
- 【算法工具包】:Scikit-learn、OpenCV、TensorFlow
> 我大致摘了几个代表出来😅