<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[JackFeng's Blog]]></title><description><![CDATA[数据挖掘分析]]></description><link>https://blog.youkuaiyun.com/elecjack</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; elecjack]]></copyright><item><title><![CDATA[pyenv local和pyenv虚拟环境的不同之处]]></title><link>https://blog.youkuaiyun.com/elecjack/article/details/135574477</link><guid>https://blog.youkuaiyun.com/elecjack/article/details/135574477</guid><author>elecjack</author><pubDate>Sat, 13 Jan 2024 19:31:17 +0800</pubDate><description><![CDATA[更适合简单的版本管理，而创建新的虚拟环境则适用于需要完全隔离的、具有特定依赖需求的项目。]]></description><category></category></item><item><title><![CDATA[LLM Agent发展演进历史（观看metagpt视频笔记）]]></title><link>https://blog.youkuaiyun.com/elecjack/article/details/134976024</link><guid>https://blog.youkuaiyun.com/elecjack/article/details/134976024</guid><author>elecjack</author><pubDate>Wed, 13 Dec 2023 16:50:23 +0800</pubDate><description><![CDATA[LLM相关的6篇重要的论文，其中4篇来自谷歌，2篇来自openai。技术路径演进大致是：SSL (Self-Supervised Learning) -> SFT (Supervised FineTune) == IT (Instruction Tuning) -> RLHF。暴露度：编程是63.4%，所以编程在很大程度上也是可被替代的。Openai是把所有资源都集中到LLM这一件事情上，集中所有资源于一点，这就是战略选择。GPT有可能会开源，如果是这样，LLM水平面上升，可能会淹没其它很多开源模型。]]></description><category></category></item><item><title><![CDATA[jupyter notebook启动问题的解决（importError：zmq.backend.cython）]]></title><link>https://blog.youkuaiyun.com/elecjack/article/details/131089049</link><guid>https://blog.youkuaiyun.com/elecjack/article/details/131089049</guid><author>elecjack</author><pubDate>Wed, 07 Jun 2023 15:33:15 +0800</pubDate><description><![CDATA[最终把用conda安装的jupyter卸载掉了，然后用pip重新安装jupyter，终于可以正常启动，问题解决。尝试重装pyzmq模块后，依然无效。]]></description><category></category></item><item><title><![CDATA[12 机器学习系统 机器学习数据]]></title><link>https://blog.youkuaiyun.com/elecjack/article/details/119918369</link><guid>https://blog.youkuaiyun.com/elecjack/article/details/119918369</guid><author>elecjack</author><pubDate>Wed, 25 Aug 2021 20:00:44 +0800</pubDate><description><![CDATA[训练数据量决定效果上限：有的时候，使用什么算法并无关紧要，关键是使用了多大的数据量进行训练。如下图所示的nlp预测场景，四种算法随着训练数据量的增加，其准确率相应增加。而不同算法尽管有一些差异，但远没有数据量的影响那么大。

除了训练数据量是否足够，另一个重要方面是特征信息是否充分。
一个有用的测试是：在给定的特征之下，人类专家能否有信心给出正确的预测？如果可以，那说明我们提供的特征信息足够充分；否则，说明我们提供的特征数据不够。特征信息充分，模型才可能做出正确预测；不充分，人类都无法做出正确预测，则大概率]]></description><category></category></item><item><title><![CDATA[理解机器学习中的偏差与方差]]></title><link>https://blog.youkuaiyun.com/elecjack/article/details/119855468</link><guid>https://blog.youkuaiyun.com/elecjack/article/details/119855468</guid><author>elecjack</author><pubDate>Sun, 22 Aug 2021 17:58:40 +0800</pubDate><description><![CDATA[所谓高偏差，意思是训练集误差（train error）和验证集误差（cv error）都很大。高偏差意味着模型太简单了，不足以准确描述实际的数据分布，对应“欠拟合”（underfit）。这时，即便增大训练数据集的量，也不会带来训练误差的减小。
高偏差对应下图左侧的简单模型，d=1表示只有一维特征。

而高方差时，训练集误差小，但验证集误差很大。模型在训练集和验证集上的表现不一致，对应“过拟合”（overfit）。高方差意味着模型足够复杂，但学习得过头了，让一些噪声数据过度影响模型分布，使得模型反而不能反映实]]></description><category></category></item><item><title><![CDATA[jupyter notebook将python2升级为python3]]></title><link>https://blog.youkuaiyun.com/elecjack/article/details/119670964</link><guid>https://blog.youkuaiyun.com/elecjack/article/details/119670964</guid><author>elecjack</author><pubDate>Fri, 13 Aug 2021 11:05:22 +0800</pubDate><description><![CDATA[查看python版本：python --version
查看pip版本：pip -V
官网下载、安装python3
查看python安装路径：which python3
查看pip安装路径：which pip3
将python3、pip3路径添加到系统配置.bashrc ：

$ echo "alias python=/Library/Frameworks/Python.framework/Versions/3.9/bin/python3"
   &gt;&gt; ~/.bashrc
$ echo "al.]]></description><category></category></item><item><title><![CDATA[python绘制散点图：二分类样本]]></title><link>https://blog.youkuaiyun.com/elecjack/article/details/113357382</link><guid>https://blog.youkuaiyun.com/elecjack/article/details/113357382</guid><author>elecjack</author><pubDate>Thu, 28 Jan 2021 20:09:08 +0800</pubDate><description><![CDATA[在做机器学习数据集的探索时，需要绘制二变量的散点图，散点图要能够区分正负样本。
如何用python绘制散点图呢？思路其实不复杂：
1.绘制正样本，使用“+”图标
2.在同一张图上绘制负样本，使用“o”图标
3.展示正负样本
import numpy as np
import matplotlib.pyplot as plt

# # 载入数据
# data = np.loadtxt('./ex1data1.txt', delimiter=',')
# # 区分特征X和标签y
# X,y = data[:,:]]></description><category></category></item><item><title><![CDATA[吴恩达机器学习笔记1：手写linear regression]]></title><link>https://blog.youkuaiyun.com/elecjack/article/details/112794320</link><guid>https://blog.youkuaiyun.com/elecjack/article/details/112794320</guid><author>elecjack</author><pubDate>Mon, 18 Jan 2021 20:32:05 +0800</pubDate><description><![CDATA[最近手写了linear regression，有以下几点收获：

不做归一化，线性模型的训练就无法收敛吗？也可以收敛，但前提是学习率alpha要选得适当，而由于不同特征的量级差异很大，alpha要选得合适并不容易
为何要做特征归一化？倒不一定是收敛速度慢，而是很难选择到合适的学习率alpha。一旦alpha选择得不合理，模型就可能无法收敛
归一化的时候，要注意记录相应的均值和方差，后续对新样本做预测时也需要使用这两个参数，对特征做归一化
这里就体现出手写模型的必要性，不手写很难理解为什么要做特征归一化
注意]]></description><category></category></item><item><title><![CDATA[最长上升子序列：dp解法]]></title><link>https://blog.youkuaiyun.com/elecjack/article/details/109654576</link><guid>https://blog.youkuaiyun.com/elecjack/article/details/109654576</guid><author>elecjack</author><pubDate>Thu, 12 Nov 2020 19:57:41 +0800</pubDate><description><![CDATA[给定一个无序的整数数组，找到其中最长上升子序列的长度。
示例:
输入: [10,9,2,5,3,7,101,18]
输出: 4
解释: 最长的上升子序列是 [2,3,7,101]，它的长度是 4。
解题思路
之前没有想清楚，以为单重循环就能解决问题。后来发现不行的，要解决f(i)的问题，必须要1、2……、f(i-1)的问题都解决了才行，而这前i-1个问题的解决，其实是需要多加一层循环的。
还是对这个问题理解不深刻，近期多思考下其中的关键点，两周后再来重做下看看。
代码
class Solution(obje]]></description><category></category></item><item><title><![CDATA[dp（动态规划）思考]]></title><link>https://blog.youkuaiyun.com/elecjack/article/details/109391685</link><guid>https://blog.youkuaiyun.com/elecjack/article/details/109391685</guid><author>elecjack</author><pubDate>Fri, 30 Oct 2020 19:35:32 +0800</pubDate><description><![CDATA[dp的核心思想是分治策略和表存储。
分治策略并非dp所独有，很多算法都运用了把问题拆解为子问题的做法，比如递归。
表存储应该是dp比较独有的一种方式，通过存储一些中间结果，可以避免重复计算，从而提升程序运行的速度。
def max_length(s1,s2):
    # 最大公共子串，用dp求解
    max_len,max_str=0,''
    # 初始化矩阵
    res=[[0 for j in range(len(s2))] for i in range(len(s1))]
    # d]]></description><category></category></item><item><title><![CDATA[N皇后：回溯算法]]></title><link>https://blog.youkuaiyun.com/elecjack/article/details/109270585</link><guid>https://blog.youkuaiyun.com/elecjack/article/details/109270585</guid><author>elecjack</author><pubDate>Sun, 25 Oct 2020 10:23:35 +0800</pubDate><description><![CDATA[解题思路
使用深度优先搜索，按行搜索。如果下一行搜索不到合法的路径，则相关参数回退到上一层，并尝试更新y之后再次搜索。
伪代码如下：
res=[] # 用于存储最终结果
def dfs(n,x,arr,cols,diag1,diag2):
    if x==n:
        res.append(arr)
    else:
        # 对于每一行x，循环搜索不同的列y值
        for y in range(n):
            if check(x,y)合法：
     ]]></description><category></category></item><item><title><![CDATA[回溯算法讨论]]></title><link>https://blog.youkuaiyun.com/elecjack/article/details/109104739</link><guid>https://blog.youkuaiyun.com/elecjack/article/details/109104739</guid><author>elecjack</author><pubDate>Thu, 15 Oct 2020 20:26:10 +0800</pubDate><description><![CDATA[目前为止，我见过的关于回溯算法最精准的定义来自于LeetCode。具体如下：回溯算法实际上一个类似枚举的搜索尝试过程，主要是在搜索尝试过程中寻找问题的解，当发现已不满足求解条件时，就 “回溯” 返回，尝试别的路径。回溯法是一种选优搜索法，按选优条件向前搜索，以达到目标。但当探索到某一步时，发现原先选择并不优或达不到目标，就退回一步重新选择，这种走不通就退回再走的技术为回溯法，而满足回溯条件的某个状态的点称为 “回溯点”。许多复杂的，规模较大的问题都可以使用回溯法，有“通用解题方法”的美称。回溯算法的基本思想]]></description><category></category></item><item><title><![CDATA[[LeetCode]最长回文子串再回顾]]></title><link>https://blog.youkuaiyun.com/elecjack/article/details/102520513</link><guid>https://blog.youkuaiyun.com/elecjack/article/details/102520513</guid><author>elecjack</author><pubDate>Sat, 12 Oct 2019 14:52:15 +0800</pubDate><description><![CDATA[题目描述：
给定一个字符串 s，找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 1：
输入: “babad”
输出: “bab”
注意: “aba” 也是一个有效答案。
示例 2：
输入: “cbbd”
输出: “bb”
通过回顾最长回文子串这个题目，加深了对动态规划的理解。原来的理解：以为动态规划就是用来求最长公共子串的，这个理解太窄了。动态规划的核心还是递归，或者叫...]]></description><category></category></item><item><title><![CDATA[[Leetcode]29. 两数相除]]></title><link>https://blog.youkuaiyun.com/elecjack/article/details/90274498</link><guid>https://blog.youkuaiyun.com/elecjack/article/details/90274498</guid><author>elecjack</author><pubDate>Thu, 16 May 2019 23:39:17 +0800</pubDate><description><![CDATA[题目描述：
给定两个整数，被除数 dividend 和除数 divisor。将两数相除，要求不使用乘法、除法和 mod 运算符。
返回被除数 dividend 除以除数 divisor 得到的商。
示例 1:
输入: dividend = 10, divisor = 3
输出: 3
示例 2:
输入: dividend = 7, divisor = -3
输出: -2
说明:
被除数和除数均为 3...]]></description><category></category></item><item><title><![CDATA[python del关键字的用法]]></title><link>https://blog.youkuaiyun.com/elecjack/article/details/89523709</link><guid>https://blog.youkuaiyun.com/elecjack/article/details/89523709</guid><author>elecjack</author><pubDate>Thu, 25 Apr 2019 19:41:59 +0800</pubDate><description><![CDATA[del Keyword
注意del是python关键字，就像def、and、or一样。它不是字典、列表的方法，但是可以用来删除字典、列表的元素。比如：
del list_item[4]
del dictionary["a"]

除此之外，还可以用del删除变量。比如：
del foo

del好用，含义也非常的清晰，以后在适当的场景可以用起来。

...]]></description><category></category></item><item><title><![CDATA[[Leetcode]27. 移除元素]]></title><link>https://blog.youkuaiyun.com/elecjack/article/details/89523473</link><guid>https://blog.youkuaiyun.com/elecjack/article/details/89523473</guid><author>elecjack</author><pubDate>Thu, 25 Apr 2019 19:35:18 +0800</pubDate><description><![CDATA[题目描述：
++难度：简单++
给定一个数组 nums 和一个值 val，你需要原地移除所有数值等于val 的元素，返回移除后数组的新长度。
不要使用额外的数组空间，你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
示例 1:
给定 nums = [3,2,2,3], val = 3,
函数应该返回新的长度 2, 并且...]]></description><category></category></item><item><title><![CDATA[[Leetcode]26. 删除排序数组中的重复项]]></title><link>https://blog.youkuaiyun.com/elecjack/article/details/89501043</link><guid>https://blog.youkuaiyun.com/elecjack/article/details/89501043</guid><author>elecjack</author><pubDate>Wed, 24 Apr 2019 19:21:50 +0800</pubDate><description><![CDATA[题目描述：
给定一个排序数组，你需要在原地删除重复出现的元素，使得每个元素只出现一次，返回移除后数组的新长度。
不要使用额外的数组空间，你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
示例 1:
给定数组 nums = [1,1,2],
函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。
你不需要考虑数组中超出新长度后面的元素。
示例 2:
给定...]]></description><category></category></item><item><title><![CDATA[[Leetcode]25. k个一组翻转链表]]></title><link>https://blog.youkuaiyun.com/elecjack/article/details/89390352</link><guid>https://blog.youkuaiyun.com/elecjack/article/details/89390352</guid><author>elecjack</author><pubDate>Thu, 18 Apr 2019 23:06:49 +0800</pubDate><description><![CDATA[题目描述：
给出一个链表，每 k 个节点一组进行翻转，并返回翻转后的链表。
k 是一个正整数，它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍，那么将最后剩余节点保持原有顺序。
示例 :
给定这个链表：1-&gt;2-&gt;3-&gt;4-&gt;5
当 k = 2 时，应当返回: 2-&gt;1-&gt;4-&gt;3-&gt;5
当 k = 3 时，应当返回: 3-&gt;2-&g...]]></description><category></category></item><item><title><![CDATA[将博客搬至优快云]]></title><link>https://blog.youkuaiyun.com/elecjack/article/details/89391277</link><guid>https://blog.youkuaiyun.com/elecjack/article/details/89391277</guid><author>elecjack</author><pubDate>Thu, 18 Apr 2019 22:15:00 +0800</pubDate><description><![CDATA[相应的博客地址为https://blog.youkuaiyun.com/elecjack，欢迎沟通交流。

          
  

]]></description><category></category></item><item><title><![CDATA[[Hive]新增字段(column)后，旧分区无法更新数据问题]]></title><link>https://blog.youkuaiyun.com/elecjack/article/details/89391244</link><guid>https://blog.youkuaiyun.com/elecjack/article/details/89391244</guid><author>elecjack</author><pubDate>Tue, 16 Apr 2019 11:11:00 +0800</pubDate><description><![CDATA[问题描述：
实际应用中，常常存在修改数据表结构的需求，比如：增加一个新字段。
如果使用如下语句新增列，可以成功添加列col1。但如果数据表tb已经有旧的分区（例如：dt=20190101），则该旧分区中的col1将为空且无法更新，即便insert overwrite该分区也不会生效。
alter table tb add columns(col1 stri...]]></description><category></category></item></channel></rss>