<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Lucky_Go的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Lucky_Go</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Lucky_Go]]></copyright><item><title><![CDATA[剑指Offer[38]：字符串的排列]]></title><link>https://blog.youkuaiyun.com/Lucky_Go/article/details/104383201</link><guid>https://blog.youkuaiyun.com/Lucky_Go/article/details/104383201</guid><author>Lucky_Go</author><pubDate>Thu, 20 Feb 2020 18:05:23 +0800</pubDate><description><![CDATA[题目

输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc, acb, bac, bca, cab和cba。

题目来源于牛客网，对剑指Offer书中字符串排列问题做了小小修改，也就是需要按字典序打印出所有的排列。也就是说两个字符排列需要根据从左到右逐个比较对应的字符的先后来确定先后顺序。

...]]></description><category></category></item><item><title><![CDATA[LeetCode-最长回文子串]]></title><link>https://blog.youkuaiyun.com/Lucky_Go/article/details/103882292</link><guid>https://blog.youkuaiyun.com/Lucky_Go/article/details/103882292</guid><author>Lucky_Go</author><pubDate>Wed, 08 Jan 2020 23:10:41 +0800</pubDate><description><![CDATA[题目链接：最长回文子串

给定一个字符串 s，找到 s 中最长的回文子串。

解法一：暴力解法
暴力解法就是判断原字符串的每一个substring是不是回文串，返回最长的回文子串。暴力解法的时间复杂度为O(n3)O(n^3)O(n3)。
解法二：最长公共子串
回文串的定义——正着和反着读一样。那么把原来的字符串 s 反过来得到 reverse_s，找到它们的最长公共子串是不是就是满足条件的回文子串...]]></description><category></category></item><item><title><![CDATA[Python简单搞定ndarray和DataFrame翻转]]></title><link>https://blog.youkuaiyun.com/Lucky_Go/article/details/103844400</link><guid>https://blog.youkuaiyun.com/Lucky_Go/article/details/103844400</guid><author>Lucky_Go</author><pubDate>Sun, 05 Jan 2020 16:39:22 +0800</pubDate><description><![CDATA[ndarray矩阵反转
a = np.arange(1, 10).reshape(3, 3)
b = a[::-1]
print(b)

会打印以下结果：
[[7 8 9]
 [4 5 6]
 [1 2 3]]

DataFrame数据反转
df = pd.DataFrame({'height':[178,162,181],'weight':[58,49,63],'gender':['male',...]]></description><category></category></item><item><title><![CDATA[[机器学习] 奇异谱分析(SSA)原理及Python实现]]></title><link>https://blog.youkuaiyun.com/Lucky_Go/article/details/103109045</link><guid>https://blog.youkuaiyun.com/Lucky_Go/article/details/103109045</guid><author>Lucky_Go</author><pubDate>Fri, 22 Nov 2019 22:06:20 +0800</pubDate><description><![CDATA[最近做时间序列分析的时候需要用到奇异谱分析，发现网上可以查到的资料很有限，看paper的时候发现大部分也说得有些简略，所以这里看完之后总结一下。
  奇异谱分析(Singular Spectrum Analysis, SSA)是一种处理非线性时间序列数据的方法，通过对所要研究的时间序列的轨迹矩阵进行分解、重构等操作，提取出时间序列中的不同成分序列(长期趋势，季节趋势，噪声等)，从而进行对时间序列进...]]></description><category></category></item><item><title><![CDATA[[机器学习] Adaboost原理及实现]]></title><link>https://blog.youkuaiyun.com/Lucky_Go/article/details/102835061</link><guid>https://blog.youkuaiyun.com/Lucky_Go/article/details/102835061</guid><author>Lucky_Go</author><pubDate>Sat, 02 Nov 2019 15:59:14 +0800</pubDate><description><![CDATA[原理
实现

]]></description><category></category></item><item><title><![CDATA[python多进程并行的简单实现]]></title><link>https://blog.youkuaiyun.com/Lucky_Go/article/details/102810082</link><guid>https://blog.youkuaiyun.com/Lucky_Go/article/details/102810082</guid><author>Lucky_Go</author><pubDate>Wed, 30 Oct 2019 12:17:35 +0800</pubDate><description><![CDATA[  这两天在跑一个文件处理程序的时候想着利用多核并行处理实现节省时间，然后例程里用了threading.Thread来实现，结果依旧很慢，查看了一下cpu使用情况根本就是在单核上跑啊。查了一下才发现python中多线程存在PIL锁，什么意思呢，就是说这个锁使得同时只能有一个线程执行。。。。。这样的结果就是即使利用了多线程，多个线程仍旧是在单核上执行的，执行某一个线程的时候，余下的所有线程都吃瓜。
...]]></description><category></category></item><item><title><![CDATA[剑指Offer[31]：栈的压入、弹出序列]]></title><link>https://blog.youkuaiyun.com/Lucky_Go/article/details/102778201</link><guid>https://blog.youkuaiyun.com/Lucky_Go/article/details/102778201</guid><author>Lucky_Go</author><pubDate>Mon, 28 Oct 2019 11:30:41 +0800</pubDate><description><![CDATA[题目

输入两个整数序列，第一个序列表示栈的压入顺序，请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。
LeetCode中也有相同的题目：验证栈序列

解决思路
  直观的想法就是构建一个栈，将第一个序列按顺序压入栈中，压入同时判断能否按照第二个序列的顺序弹出。整理一下这个思路，步骤如下：

依次将第一个序列的元素压入栈中；
判断这个元素是不是第二个序列中的将要pop的值；
如...]]></description><category></category></item><item><title><![CDATA[[机器学习] EM算法]]></title><link>https://blog.youkuaiyun.com/Lucky_Go/article/details/102753865</link><guid>https://blog.youkuaiyun.com/Lucky_Go/article/details/102753865</guid><author>Lucky_Go</author><pubDate>Sun, 27 Oct 2019 15:17:18 +0800</pubDate><description><![CDATA[  在前面的朴素贝叶斯分类器推导中，我们是基于训练样本所有属性值都是已知的这个假设，但是实际应用中往往存在训练样本的某些属性值未知，此时就需要用到EM算法来进行参数估计。EM算法的全称为最大期望算法(Expectation-Maximization algorithm)，它是基于最大似然估计理论的一种优化算法，通常用来对存在隐变量的概率模型进行参数估计。
最大似然估计
  假设我们在校园里随机找了...]]></description><category></category></item><item><title><![CDATA[[机器学习] 朴素贝叶斯分类器]]></title><link>https://blog.youkuaiyun.com/Lucky_Go/article/details/102526458</link><guid>https://blog.youkuaiyun.com/Lucky_Go/article/details/102526458</guid><author>Lucky_Go</author><pubDate>Sun, 20 Oct 2019 16:08:44 +0800</pubDate><description><![CDATA[基础知识
  朴素贝叶斯分类器是基于贝叶斯决策理论的分类模型，首先来了解一下贝叶斯决策理论和概率论的相关知识。
贝叶斯决策理论
  概率决策是贝叶斯决策理论的核心思想。在执行分类任务的时候我们无法保证分类的结果总是正确的，贝叶斯决策理论的目的就是基于已有的相关概率来做出使得误判损失最低的决策。
  对于一个多分类任务，假定样本总共有 mmm 类：c1,c2,...,cm{c_1, c_2,...,...]]></description><category></category></item><item><title><![CDATA[[机器学习] 决策树]]></title><link>https://blog.youkuaiyun.com/Lucky_Go/article/details/102509125</link><guid>https://blog.youkuaiyun.com/Lucky_Go/article/details/102509125</guid><author>Lucky_Go</author><pubDate>Sat, 12 Oct 2019 13:14:28 +0800</pubDate><description><![CDATA[决策树的基本概念
  决策树是一类常用的机器学习方法，决策树实现决策的过程和我们平时做决定的过程很相似。想想如果自己马上要放假，要不要出去浪就是个大问题，首先考虑老板交代的接近deadline的项目有没有完成，如果完成了就可以放心大胆的浪了，否则就乖乖磕研吧；任务完成了，但是转念一想，最近剁手太多没钱，算了还是宅着省钱吧；突然发现发工资了，有钱浪了，赶紧看看天气预报，如果假期天气不错果断室外放飞自...]]></description><category></category></item><item><title><![CDATA[[机器学习]K-近邻算法]]></title><link>https://blog.youkuaiyun.com/Lucky_Go/article/details/102461261</link><guid>https://blog.youkuaiyun.com/Lucky_Go/article/details/102461261</guid><author>Lucky_Go</author><pubDate>Wed, 09 Oct 2019 15:11:09 +0800</pubDate><description><![CDATA[算法概述
  自我感觉K-近邻(k-NearestNeighbor)算法是最简单最易理解的分类算法了。怎么个简单法呢？简单到没有一个训练分类器的过程，仅仅根据需要分类的样本到已知类别的样本之间的距离来进行分类。
  简单来讲，如果存在一个训练样本集，并且训练集中每个样本对应的类别也已知；那么对于未知类别的新样本，我们计算它到每个训练样本的距离，然后选择距离最近的k个样本，这k个样本中计数最多的一类...]]></description><category></category></item><item><title><![CDATA[二叉查找树的基本实现]]></title><link>https://blog.youkuaiyun.com/Lucky_Go/article/details/101453227</link><guid>https://blog.youkuaiyun.com/Lucky_Go/article/details/101453227</guid><author>Lucky_Go</author><pubDate>Thu, 26 Sep 2019 16:53:33 +0800</pubDate><description><![CDATA[定义


数组和链表
数组和链表是两种使用频率非常高的数据结构，但两者的结构也决定了他们的应用场景。数组的元素在内存中的地址是连续的，而构成链表的结点在内存中的地址不连续，数组的元素可以通过索引进行随机访问，链表则需要遍历访问，因此数组的查询速度比链表快；另一方面链表的长度可变，插入和删除元素的效率非常高，因此在增删操作较多的情况下链表性能比数组好。


二叉查找树
二叉查找树(Binary Se...]]></description><category></category></item><item><title><![CDATA[剑指Offer[24]：反转链表]]></title><link>https://blog.youkuaiyun.com/Lucky_Go/article/details/101000384</link><guid>https://blog.youkuaiyun.com/Lucky_Go/article/details/101000384</guid><author>Lucky_Go</author><pubDate>Wed, 18 Sep 2019 22:18:22 +0800</pubDate><description><![CDATA[题目
  定义一个函数，输入一个链表的头节点，反转该链表并输出反转后链表的头节点。我们将链表的节点定义如下：
class ListNode{
	private int val;       // 节点值
	private ListNode next;     // 下一个节点
}

  LeetCode中也有相应的题目
解法
迭代解法
  迭代的方法很好理解：为了反转链表我们从前向后遍历链表，改变...]]></description><category></category></item><item><title><![CDATA[剑指Offer[16]：数值的整数次方]]></title><link>https://blog.youkuaiyun.com/Lucky_Go/article/details/101000321</link><guid>https://blog.youkuaiyun.com/Lucky_Go/article/details/101000321</guid><author>Lucky_Go</author><pubDate>Wed, 18 Sep 2019 22:16:27 +0800</pubDate><description><![CDATA[题目
   实现函数 double Power(double base, int exponent), 求base的exponent次方，不使用库函数，同时不需要考虑大数问题。
分析
  书中作者已经分析的很清楚了，主要有两个方面去考虑：

指数(exponent)为0和负数的情况；
求解的效率问题。

  第一个方面是容易被忽略的，还有需要考虑底数为0时指数小于等于0是没有意义的；第二个方面就是...]]></description><category></category></item><item><title><![CDATA[二分查找的递归和迭代实现]]></title><link>https://blog.youkuaiyun.com/Lucky_Go/article/details/100902318</link><guid>https://blog.youkuaiyun.com/Lucky_Go/article/details/100902318</guid><author>Lucky_Go</author><pubDate>Mon, 16 Sep 2019 21:22:57 +0800</pubDate><description><![CDATA[基本思想
  在一个数组中查找某个特定元素的时候，直观的方法就是从头开始向后进行遍历。但是，如果数组一开始就是有序的，那么我们就可以有更快的查找方式——二分查找。二分查找是二分法思想的一个典型应用，具体来说，对于一个有序数组，我们如果要查找一个元素，那么首先用数组的中间元素将数组切分为两部分，若带查找元素大于中间元素则在前一部分找，小于则在后一部分找……以此不断地切分数组搜索待查找元素。
  二分...]]></description><category></category></item><item><title><![CDATA[模糊c均值聚类及python实现]]></title><link>https://blog.youkuaiyun.com/Lucky_Go/article/details/100865064</link><guid>https://blog.youkuaiyun.com/Lucky_Go/article/details/100865064</guid><author>Lucky_Go</author><pubDate>Sun, 15 Sep 2019 21:38:14 +0800</pubDate><description><![CDATA[原理简介
  模糊c均值聚类(Fuzzy C-Means)是引入了模糊理论的一种聚类算法，通过隶属度来表示样本属于某一类的概率，原因在于在很多情况下多个类别之间的界限并不是绝对的明确。显然，相比于k-means的硬聚类，模糊c均值聚类得到的聚类结果更灵活。
  模糊c均值聚类通过最小化一下目标函数来得到聚类中心：
(1)Jm=∑i=1N∑j=1Cuijm∥xi−cj∥2,1≤m&amp;lt;∞J...]]></description><category></category></item><item><title><![CDATA[十大排序算法总结(附java实现)]]></title><link>https://blog.youkuaiyun.com/Lucky_Go/article/details/100783558</link><guid>https://blog.youkuaiyun.com/Lucky_Go/article/details/100783558</guid><author>Lucky_Go</author><pubDate>Thu, 12 Sep 2019 21:05:38 +0800</pubDate><description><![CDATA[定义
  排序 是计算机内部经常进行的一项操作，目的是将一组无序的序列调整为一组有序的序列。Excel中将数据按照名称进行升序降序排列就是一种常见的排序操作。
相关概念

时间复杂度：反映操作次数(计算量)随数据长度的变化规律，是数据规模的函数，用O(⋅)O(·)O(⋅)表示。
空间复杂度：用来度量执行算法所需的存储空间随数据规模的变化情况，也用O(⋅)O(·)O(⋅)表示。
稳定性：对于两个相等...]]></description><category></category></item><item><title><![CDATA[排序算法(8)：计数排序/桶排序/基数排序]]></title><link>https://blog.youkuaiyun.com/Lucky_Go/article/details/100783487</link><guid>https://blog.youkuaiyun.com/Lucky_Go/article/details/100783487</guid><author>Lucky_Go</author><pubDate>Thu, 12 Sep 2019 21:02:11 +0800</pubDate><description><![CDATA[  计数排序、桶排序和基数排序是三个线性时间非比较类排序算法，他们相同的特点在于不是通过比较元素的大小来确定他们的排列顺序，并且均能够达到线性时间复杂度O(n+k)O(n+k)O(n+k)，之所以这样根本在于他们都使用了额外的桶(bucket, 不是某种特定数据结构，只是一种叫法)来辅助存储数据。但是这三种排序算法的应用场景都比较有限，下面具体来讲一下这三种排序算法。
计数排序
基本思想
  以一...]]></description><category></category></item><item><title><![CDATA[排序算法(7)：堆排序]]></title><link>https://blog.youkuaiyun.com/Lucky_Go/article/details/100783448</link><guid>https://blog.youkuaiyun.com/Lucky_Go/article/details/100783448</guid><author>Lucky_Go</author><pubDate>Thu, 12 Sep 2019 20:58:51 +0800</pubDate><description><![CDATA[基本思想
  堆排序是基于堆这种数据结构的一种排序方法。首先将待排序的数组(或序列)构造成完全二叉树，然后利用完全二叉树中父节点和孩子节点之间的关系，每次从当前二叉树中找出最大节点并将其移出未排序部分，达到排序的目的。首先介绍一下一些相关概念：


完全二叉树：对于一棵深度为 hhh 的二叉树，如果除了最后一层外，其他每层的节点数都达到最大，且第 hhh 层的节点都连续集中在最左边，那么这就是一棵...]]></description><category></category></item><item><title><![CDATA[排序算法(6)：快速排序]]></title><link>https://blog.youkuaiyun.com/Lucky_Go/article/details/100783388</link><guid>https://blog.youkuaiyun.com/Lucky_Go/article/details/100783388</guid><author>Lucky_Go</author><pubDate>Thu, 12 Sep 2019 20:57:15 +0800</pubDate><description><![CDATA[基本思想
  快速排序也是一种基于分治的排序算法，它的主要思想是将一个数组切分成两部分，将这两部分独立的进行排序。和归并排序不同的是：归并排序首先对两部分子数组进行排序，在子数组各自有序之后将他们合并为一个完整的有序数组；而快速排序在两个子数组均有序的时候整个数组也已经有序了。
  快速排序的关键在于对数组的切分，这个过程通过一个切分元素(或者叫基准)来实现的，切分将数组划分为两部分，满足前一部分...]]></description><category></category></item></channel></rss>