机器学习十讲-第三讲分类
1|0感知机
1|1原理
下面用一个 perception
函数实现上述算法。为了深入观察算法运行过程,我们保留了每一轮迭代的参数 ww,并对每一轮迭代中随机选取的样本也进行了记录。所以,perception
函数返回三个取值: 最终学习到的参数 w
, 每轮迭代的参数 W
, 每轮迭代随机选取的样本 mis_samples
。
1|2代码实现
将学习到的感知机的决策直线可视化,观察分类效果。
展示:
2|0 逻辑回归
2|1原理
2|2 代码实现
梯度下降法求解逻辑回归
我们将数据及标签带入上面定义的函数,学习率设为 0.5 ,迭代次数为1000次,输出训练好的参数,并将分类结果进行可视化。
随机梯度下降法求解逻辑回归
我们将学习率设为 0.5,迭代次数为1000次,并输出训练好的参数,将分类结果可视化。
3|0向量机
3|1原理
3|2 代码实现
需要注意的是,线性支持向量机的正则化项通常不包括截距项,我们可以将数据进行中心化,再调用上述代码。
将得到的超平面可视化,同时将两个函数间隔为 1 的线也绘制出来。对于所有不满足约束的样本,使用圆圈标记出来。
4|0 实例-新闻主题分类
4|1步骤
读取数据
查看训练集的前5行。
为了简单,我们这里先只考虑二分类,我们选取主题为"科技"和“文化”新闻。
4|2模型效果评估
下面使用混淆矩阵来分析模型在测试集上的表现。混淆矩阵从样本的真实标签和模型预测标签两个维度对测试集样本进行分组统计,然后以矩阵的形式展示。借助混淆矩阵可以很好地分析模型在每一类样本上的分类效果。为了更直观地分析,我们借助 Python 中的可视化库 Seaborn 提供的 heatmap 函数,将线性支持向量机模型的混淆矩阵进行可视化。
可见:正对角线还是比较集中的,代表效果还不错
5|0总结
在本案例中,我们使用随机梯度方法实现了三种使用回归的思想来解决分类问题的模型:感知机、逻辑回归和线性支持向量机。在实现时主要使用了 NumPy
, Pandas
和 Matplotlib
等 Python 库。在 Sklearn
中,linear.model.SGDClassifier
类实现了常见算法的随机梯度下降实现。我们使用该类,在一份中文新闻数据上分别用随机梯度下降算法训练了感知机、逻辑回归和线性支持向量机模型,实现了对中文新闻主题的分类。最后,使用 Sklearn.metrics
实现的模型评价方法,用正确率和混淆矩阵对分类效果进行了简单的分析。
以下为绘制三种分类模型的从回归到分类的映射函数。
raw_train = pd.read_csv("./input/chinese_news_cutted_train_utf8.csv",sep="\t",encoding="utf8")raw_test = pd.read_csv("./input/chinese_news_cutted_test_utf8.csv",sep="\t",encoding="utf8")
__EOF__
作 者:清风紫雪
出 处:https://www.cnblogs.com/xiaofengzai/p/14391415.html
关于博主:编程路上的小学生,热爱技术,喜欢专研。评论和私信会在第一时间回复。或者直接私信我。
版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本。
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2020-02-08 BaseAdapter的三种表达式分析,startActivityForResult的使用