聚类算法
聚类的概念:
聚类是一个无监督问题,我们在分类的时候没有哪一类的标签了
聚类:相似的东西分到了一组
难点:如何评估,如何调参
K-MEANS算法
基本概念
要得到簇的个数,需要指定K值,例如上图所示,它的K值就是3
质心:均值,即向量各维度取平均即可,就是各个簇最中心的点
距离的度量:这里有两种方法:
欧氏距离:sqrt[(x1-x2)^2 + (y1-y2)^2 ……]
余弦相似度:以原点为起始点,需要比较的两个点为终止点,做向量,求这两个向量的余弦,余弦约小这两个点越相似
我们一般使用欧氏距离来计算两点的距离
我们在计算的时候应该先吧数据标准化,为了防止不同维度上数据差距,导致的误差,标准化之后,可以让他们变化范围尽可能的缩小,不影响我们计算
要优化的目标:
其中最外层的是从1 到 K 相加, 最里层是每一个类中每一个点到质心的距离
我们想要的是 在每一个类中属于该类的点到该类的质心的距离和最小
工作流程
这是我们的初始数据分布图。现在假设我们把它分为两类 K = 2
当我们确定分完的类数之后,会随机生成 ...
大整数乘法
大整数乘法采用分治法来解决这个问题:先把大整数分为两部分 A和B
例如123456789 = 12345 * 10410^4104 + 6789;
其中x和y不一定都是n为。这样X和Y的乘积:
XY = (A * 100.5n10^{0.5n}100.5n + B)(C * 100.5m10^{0.5m}100.5m + D) = A * C * 100.5n+0.5m10^{0.5n + 0.5m}100.5n+0.5m + (AD * 100.5n10^{0.5n}100.5n + CB * 100.5m10^{0.5m}100.5m ) + BD
如果按照上面这个方式计算的话一共需要进行4次乘法最后的时间复杂度还是 2n2^n2n 因此我们还需要进行化简:
我们可以把(AD * 100.5n10^{0.5n}100.5n + CB * 100.5m10^{0.5m}100.5m ) 进行化简:
为了减少递归的次数我们可以将上面式子中的公共部分提取出来方便计算
步骤:
我们先判断一下0.5n 是否大于 0 ...
Excel处理模块
打开文件:
创建:
12345678from openpyxl import Workbook# 实例化wb = Workbook()# 获取当前active的sheetsheet = wb.activeprint(sheet.title)sheet.title = "Salary luffy"
打开已有文件:
12from openpyxl import load_workbookwb2 = load_workbook("文件名.xlsx")
写数据
123456789#方式一:数据可以直接分配到单元格中(可以输入公式)sheet["C5"] = "hello"sheet["C7"] = "hi"# 方式二:可以附加行,从第一列开始附加(从最下方空白处)sheet.append([1,2,3])#方式三:Python类型会被自动转换sheet["A3"] = datetime.datetime.now().s ...
函数
描述
jieba.cut(s)
精确模式,返回一个可迭代的数据类型
jieba.cut(s, cut_all = Ture)
全模式,输出文本s中所有可能的单词
jieba.cut_for_search(s)
搜索引擎模式,适合搜索引擎建立索引的分词结果
jieba.lcut(s)
精确模型,返回一个列表模型,建议使用
jieba.lcut(s, cut_all=Ture)
全模型,返回一个列表模型,建议使用
jieba.lcut_for_search(s)
搜索引擎模型,返回一个列表类型,建议使用
jieba.add_word(w)
向分词词典中添加新词w
分词返回值类型:
cut 和 cut_for_search 返回值类型都是一个迭代器(可迭代对象, 使用for可以依次遍历出来)
lcut 和 lcut_for_search 返回值类型都是一个列表
参数问题:
jieba.cut 和 jieba.lcut接受 3 个参数:
需要分词的字符串(unicode 或 UTF-8 字符串、GBK 字符串)
cut_all ...
Gitee仓库创建方法
申请账号的方法我就不说了,应该都会吧!!, 如果你想要 创建PicGo的图片仓库的话,需要创建公开的仓库
我们先点上面这个加号 找到新建仓库 进入我们上面这个界面
按上面的提示一个个填写即可
这里只能是创建私有的,如果想要转变成共有的话需要创建完成之后修改
之后我们选择我们需要的语言和许可证,选择自己喜欢的即可
之后直接创建即可
这里 点管理 最下面有一个公开,我们点击即可。
LDA(主题模型)
(5条消息) KaTeX数学公式语法_李乾文的博客-CSDN博客_katex语法
(5条消息) Typora编辑数学公式_Ambitious°的博客-CSDN博客_typora公式编辑
本文是启发是 v_JULY_v这位大佬的博客 博客地址为:https://blog.csdn.net/v_JULY_v/article/details/41209515
该文章单纯是为了以后复习使用!!
LDA主要包含:
一个函数:gamma函数
四个分布:二项分布,多项分布,beta分布,Dirichlet(迪利克雷)分布
一个概念和一个理念:共轭先验和贝叶斯框架
两个模型:pLSA, LDA
一个采样:Gibbs采样
gamma函数
对LDA的整体理解:
LDA 主要是可以将文档集中每篇文档中的主题以概率形式给出, 通过分析一些文档抽取它们主题(分布)出来之后,然后通过主题(分布)进行文本聚类和文本分类。LDA也是一种词袋模型,每篇文档是由一组词构成,词和词之间没有先后顺序关系,就像一个袋子,把它们全部装起来,这个袋子就是这一片文档,其中这些词就是能够表达文档主题的一些词 ...
Python
未读通过命令行窗口或 Anaconda Prompt 窗口
1、安装 Jupyter 主题
pip install jupyterthemes
2、更新 Jupyter 主题 (可选)
pip install --upgrade jupyterthemes
3、查看可用的 Jupyter 主题
1jt -l
4、更换 Jupyter 主题
jt -t onedork -f fira -fs 13 -cellw 90% -ofs 11 -dfs 11 -T -T
-t 主题 -f(字体) -fs(字体大小) -cellw(占屏比或宽度) -ofs(输出段的字号) -T(显示工具栏) -T(显示自己主机名)
更改主题后 Jupyter Notebook 是下面的效果:
– 恢复 Jupyter 默认风格
jt -r
5、各种主题风格
chestersih
1
jt -t chesterish -f fira -fs 17 -cellw 90% -ofs 15 -dfs 15 -T -T
grade3
1
jt -t grade3 -f fira -fs 1 ...
计算机基础
未读
头文件为
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556#ifndef TREEHEAD_H_INCLUDED#define TREEHEAD_H_INCLUDED#include <stdio.h>#include <stdlib.h>#include <string.h>#define ERROR 0#define OK 1#define status inttypedef struct HuffmanData{ char *data; int data2; int weight; struct HuffmanData* next;}HFMData, *LHFMData;// Huffman辅助数组typedef struct{ char data[4]; int data2; int weight; int ...
次序选择问题
分析
问题输入:
包含n个不同元素的数组A[1…n]
整数k(1<k <n)
问题输出:
返回整数k的下标
问题求解:
蛮力法:
我们先把数据进行排序,然后我们想要第几个元素我们就选取第几个元素, 这样的时间复杂度为n * log(n) ,但是这样我们不仅得到了第i小的元素,而且我们还得到了第i+1 … 等一系列数据。这样就白白浪费了很多的时间。
改进快速排序法:
利用快速排序的思想,有以下几种情况:
选取固定位置主元,小于主元的元素个数q-p。
情况1 : k =q- p + 1,A[q]为数组第k小元素
情况2 : k<q-p+ 1,在A[p…q -1]中寻找第k小元素
情况3 : k > q-p+1,在A[q+ 1…r]中寻找第k -(q -p+1)小元素
如果是情况一的话直接返回就行
如果是情况二的话我们就需要在 A[p…q -1]中寻找第k小元素
如果是情况三的话我们就需要在A[q+ 1…r]中寻找第k 小元素
解决问题的步骤为:
例题
如果我们需要查找第八小的元素
情况1 : k =q- p + ...
活动选择问题
无权值
问题背景
有一个会场,需要安排几场活动
公司年会:10:00 - 19:00
婚礼宴请:11:00- 14:00
生日聚会:12:00 - 17:00
学术研究:14:00 - 16:00
问 如果安排这个会场能让活动尽可能的多的进行?
有下面这几个活动和占比时间
选择出租的时间不能有冲突
问题研究,策略选择
这时候我们采用贪心策略:
策略一:最短活动优先
策略二:最早开始的活动优先
策略三:最早结束活动优先
选择最早结束的活动,可以给后面的活动留出更大的弓箭
证明该策略是正确的(替换法)
我们可以通过替换的规则让 某个最优解替换为 贪心所得的最优解,在替换的时候,如果活动相同的话,直接替换即可,如果不相同的话,因为贪心所得的是这个活动的最先完成 的活动,所有会给后面的活动留出的活动空间更大不会影响后面活动的替换
代码实现
输入:活动集合S={a1, a2, a3 … an},每个活动ai的起始时间si 结束时间 fi
输出:不冲突的最大子集S‘
先把活动结束时间由小到大排个序
先给数组S赋值 a1(因为这里a ...