numpy
numpy用于矩阵计算,内置了大量矩阵计算的函数,并且速度也比列表快
创建
import numpy as npa = [1, 2, 3]b = [[1,2], [2, 3], [5, 8]]c = np.array(a)d = np.array(b, int)
通过array就把列表转化成了numpy的矩阵
ones(shape, dtype): 这个是创建值全为1的矩阵,shape是矩阵的行和列数,dtype是矩阵数据类型。
zeros(shape, dtype): 创建全是零的矩阵
full(shape, constant_value, dtype): 创建指定数值的矩阵。其中constant_value是用来填充矩阵的值
eye(N): 创建单位矩阵,N是矩阵的维度
diag(v, k): 创建对角矩阵。v如果是一维则是创建对角矩阵,如果是二维是获取对角线上的元素。k=0表示获取主对角线上元素,k>0则获取主对角线上方第k条对角线元素
创建随机数组
np.random.rand(shape): 创建一个值在0到1的随机数组。例如np.random.ran ...
Untitled
逻辑回归(logistic regression)非线性回归例子:.这个例子中的关系不能很好的用线性关系进行模拟,所以我们要另外做曲线模拟它。
为了更好的处理,还需要用sigmoid函数平滑化。
sigmoid函数图像为
所以预测函数为:
我们要求解的问题可以转化成,求解一组参数使得J()最小化。求解方法时求偏导让导数为零。
当然上面这个方法求解过于复杂,我们也可以使用梯度下降的方法。非线性方程其实就是一个超平面,我们可以求偏导找出梯度,沿着梯度下降的方向不断走就可以找到最低点。
求解函数为
其中a是更新率(learning weight)
所以求完偏导的结果为:
h(x) = theta * x(i)
这就是更新函数,我们呢需要重复更新直到 收敛
实例import numpy as npimport randomdef genData(numPoints,bias,variance):# 产生实验数据,其中numpoint是实验个数,bias是偏差,variance是方差 x = np.zeros(shape=(numPoints,2)) y = np. ...
线性回归
基本概念简单线性回归指的是只有一个x和一个y
用来描述自变量和因变量及偏差之间关系的模型叫做回归模型
简单线性回归的模型是:
b0是截距,b1是斜率,e是偏差。
关于偏差
他是一个随机变量,均值是0
它的方差对于所有自变量x是相同的
它的值是独立的
它满足正太分布
线性回归方程就是少了偏差,其他和基本模型是相同的。
我们现在给若干x和y,要解决的问题是找出最好的截距和斜率。
线性回归的求解我们要找最能代表趋势的直线,实际上就是要找距离所有点最近的直线。
我们就是要找一条直线使得这个值最小,其中y^i是用这条直线求出来的估计值,yi是这个点的值。
求解这个问题的数学公式
多元线性回归它与一元线性回归的区别就是有多个自变量
具体模型求解过程涉及线代高数等内容,这里不再详解。
使用:from numpy import genfromtxtfrom sklearn import linear_modeldataPath = r"Delivery.csv"deliveryData = genfromtxt(dataPath,delimiter=',' ...
KNN算法
大致步骤KNN是最临近规则分类算法。
为了判断未知分类,我们需要用已知分类进行参照。
选择参照物个数k。 k的取值一般都比较小,可以是1,3,5,7等数,通过实验得知哪个比较好就用哪个。一般用奇数,避免两边数目相同
选择最近的k个实例然后看他们都属于哪个类,让这个实例成为数目最多的实例。
距离衡量方法
EUclidean Distance方法。和距离公式类似,对应特征值相减平方再开根号。
例:
from sklearn import neighborsfrom sklearn import datasets # 这个库中自带一些有名的数据集knn = neighbors.KNeighborsClassifier() # 创建分类器iris = datasets.load_iris() # 导入数据集knn.fit(iris.data, iris.target)predictedLabel = knn.predict({% post_link 0.1, 0.2, 0.3, 0.4 %})
python time random turtle jieba
time
time(): 输出从1970年1月1日到现在时间时间差(以秒为单位)。可以用来获取程序运行时间。
gmtime(): 获取utc时间。返回一个struct_time对象
localtime(): 获取本地时间,也是返回struct_time对象
ctime(): 获取本地时间的字符串
mktime(t): 把struct_time类型的t转化成时间差(从1970到现在)
strftime(“%Y-%m-%d %H:%M:%S”, t): 格式化t.例如2020-02-02 01:02:03
strptime(timestring, “…”): 将格式为…的timestring转化成struct_time
sleep(): 进程睡眠
perf_counter(): 用来计时。和time类似,但精度更高
random
seed(): 初始化随机数种子
random(): 生成一个0到1的小数
randint(a, b): 生成a到b的随机整数
getrandbits(k): 生成一个kbit长的随机整数
randrange(start, stop, step): 生成 ...
Python 爬取
requestsrequests用来爬取网站上的信息。有七个主要方法
r = requests.get(url, params, ** kwargs): url是你想爬取网站的url。通过get构造了一个向服务器请求资源的Request对象。返回一个包含服务器资源的Response对象。
head(): 获取网页头部信息
post(url, data, json, kwargs): 在后面添加数据。默认如果是列表等会存储到form字段下,如果是字符串会存在data字段下
put(): 覆盖网页某一字段数据。例如上传字符串会把data字段覆盖
patch(): 删改某一位置信息(和put的区别是put必须全部删除,patch只需要修改需要改的部分)
delete(): 删除url处的资源
request(method, url, ** kwargs): method有七种,分别是’GET’,’OPTIONS’等,注意其中delete是小写。
kwargs参数(get,put, patch要比request少params,head,delete相同,post11个):
params: ...
python wxpython
事件处理事件就是状态改变时发出的信号,然后你可以通过绑定指定一个函数去处理。例如按下按钮就产生了一个事件,之后可以让一个函数去处理按下按钮之后的反应。
绑定函数使用 Bind(event, handler, source=None, id=wx.ID_ANY, id2=wx.ID_ANY).event是产生的事件,handler是处理事件的方法,source是触发事件的对象。
例如 Bind(wx.EVT_BUTTON, self.Button_enter, button1)这样button1按下时会使用Button_enter函数
Frame方法: Wx.Frame (parent, id, title, pos, size, style, name)
parent是窗口父类,主要控制打开这个窗口时显示位置,一般显示在父窗口中央。如果是None显示在屏幕正中央。
id是窗口标识,一般选-1让id自动生成。
pos是左上角位置,用元组表示,例如(0,0),wx.DefaultPosition是由操作系统决定.
size是长和宽,wx.DefaultSize 是由操作系统决定。
sty ...
动态顺序统计
首先要了解红黑树.
顺序统计树指示在普通的红黑树上附加了一个参量,x->size。这个参量表示的是该节点的子树含有元素个数。
为了找出第i小的关键字,可以用:
select(node* x, int i){ int r = x->left->size + 1; //x的序号,因为红黑树也是一个排序树,所以x一定比左边元素都大 if(i == r) { return x; } else if(i < r) { return select(x->left, i); } else { return select(x->right, i-r); }}
确定一个元素的秩
秩指的是排第几号元素。rank(node* t, node* x){ int r = x->left->size + 1; node* y = x; while ...
Swing组件
Border边框边框创建与设置Border border = BorderFactory.createXxxxBorder(...);jComponent.setBorder(border);//设置边框BorderFactory中的边框
使用BorderFactory中的静态方法创建边框
createEmptyBorder(): 空边框
createEmptyBorder(int top, int left, int bottom, int right):
createLineBorder(Color color): 线边框。color是线的颜色
createLineBorder(Color color, int thickness, boolean rounded): thickness是线宽,rounded是是否有圆角
createTitledBorder(Border border, String title, int titleJustification, int titlePosition, Font titleFont, Color titleColor):标题边 ...
排序
插入排序稳定?不稳定: 稳定指的是两个相同的元素排序完成之后在表中相对位置不变。
直接插入当插入第i个时,前i-1个已经排好了。
int tag = 0;for(int i=1; i<n; i++){ if(a[i]<a[i-1]) { tag = a[i]; int temp; for(int k=i-1; k>=0; k--) { if(a[k]>tag) { a[k+1] = a[k]; temp = k; } else { break; } } a[k+1] = tag; }}
默认第一个已经排好,从第二个开始从后往前排,如果第k个数比要 ...