IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 双月数据生成及其常见算法(二) -> 正文阅读

[数据结构与算法]双月数据生成及其常见算法(二)

算法部分:

数据使用:双月数据生成及其常见算法(一)_防空洞的仓鼠的博客-CSDN博客? 文章中的数据

(一)最小二乘:

理论部分:

通过矩阵求解方式,来获取最优参数。具体求解B则为我们所需要的最佳解。X为对应的数据,Y是对应的输出。?

代码实现:

其中trainData是对应的数据数据,target则为对应标签。

#最小二乘算法
    def MIN2X(self, trainData,target):
        self.w = np.array((trainData.T*trainData).I*trainData.T*target[:,2:])
        print("MIN2X更新后的权重为:{}".format(self.w))

(二)ML:最大似然估计

理论部分:

最大似然估计是概率论中常常涉及到的一种统计方法。最大似然估计会寻找关于θ的最可能的值,即在所有可能的θ取值中,寻找一个值使这个采样的“可能性”最大化。

现在,我们的目标就是最大似然函数:

?最大化对数似然函数,实际上就是最小化平方和误差函数,以此找到最大似然解。

根据公式推导:最优化解的形式为:

W(ML)? = Rxx.I(N)*Rdx(N)

其中Rxx为自相关矩阵,Rdx则为互相关矩阵。

Rxx(N) = x*x.T? ? ? ? ? ? Rdx(N) = x*d?

通过带入X以及对应的响应d,则能够得到该部分数据的ML最优参数解。

代码部分:

#ML算法
    def ML(self, TrainData, target):
        Rxx = TrainData.T * TrainData
        Rdx = TrainData.T * target[:, 2:]
        self.w = np.array(Rxx.I*Rdx)
        print("ML更新后的权重为:{}".format(self.w))

(三)MAP:最大后验估计

理论部分:最大似然估计不同的是,最大后验估计寻求的是能使后验概率最大的值。通常是:通过参数的先验分布结合样本信息得到参数的后验分布。

本质上不同于ML估计,MAP估计是有偏估计,ML是无偏估计。

代码部分:

  #MAP算法
    def MAP(self,TrainData,target):
        Rxx = TrainData.T*TrainData
        Rdx = TrainData.T*target[:,2:]
        self.w = np.array((Rxx+self.lamba*np.eye(len(TrainData.T))).I*Rdx)
        print("MAP更新后的权重为:{}".format(self.w))

(四)SLP:单层感知机

理论部分:通过迭代思想,来对参数的优化,使得求解出一组误差较小的最优解。

代码部分:

      def SLP(self,trainData,target):
        ERROR = []
        allNumbel = len(trainData)
        for i in range(self.epoch):
            errorNumbel = 0
            for x, y in zip(trainData, target):

                if y[2] != sign(np.dot(self.w.T, x)):
                    errorNumbel = errorNumbel + 1
                    self.w = self.w + self.lr * sign(y[2] - np.dot(self.w.T, x))*x

            ERROR.append(errorNumbel/allNumbel)

        print("LMS更新后的权重为:{}".format(self.w))
        return ERROR

(五)LMS:

理论部分:通过不断迭代,寻找一组权值向量,使得预测和期望之间的误差最小化。进而不断地优化参数。

E(w?)≤E(?w)

一般方法是不断迭代使 E(w(i))<E(w(i?1)) ,如此往复直到代价函数足够小为止。

代码部分:

 # 最小二乘算法
    def LMS(self, trainData, target):
        ERROR = []
        allNumbel = len(trainData)
        for i in range(self.epoch):
            errorNumbel = 0
            for x,y in zip(trainData,target):
                x = np.squeeze(x.tolist())
                y = np.squeeze(y.tolist())

                if y[2] != sign(np.dot(self.w.T, x)):
                    errorNumbel = errorNumbel + 1

                err = y[2] - x.T * self.w
                self.w = self.w + self.lr * x * err
            ERROR.append(errorNumbel/allNumbel)

        print("LMS更新后的权重为:{}".format(self.w))
        return ERROR

结果:

?

?

?

?以上为仅讨论线型可分情况下的类型,分类和决策平面,以及完成代码放以下链接

双月数据及其分类算法.zip-机器学习文档类资源-CSDN下载

?

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-12-02 17:01:12  更:2021-12-02 17:01:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 14:50:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码