tips:
import numpy as np
array_1=np.array([1,2,3])#一维
array_2 = np.array([
[1, 1,1],
[1, 2,3]
])#二维
array_3 = np.array([
[[1, 1,1],
[1, 2,3]],
[[2, 2,2],
[1, 2,3]]
])#三维
tips:
#接上1.1的程序段
print(array_1.shape);
print(array_1.shape[0]);#第一个维度是3
print("**************");
print(array_2.shape);
print(np.shape(array_2));
print(np.shape(array_2[0]));#读取子数组的形状
print(array_2.shape[0]);#读取维度的长度
print("**************");
print(array_3.shape);
print(array_3.shape[2]);#第3个维度是3
tips:
img=np.zeros(shape, dtype=float, order=‘C’)
参数名 | 参数值 | 含义 |
---|---|---|
shape | ( , , , ) | 给定数组形状 |
dtype | 默认np.float64 | 数据类型,可选参数 |
order | c:行优先;f:列优先 | 优先,可选参数 |
数组和矩阵对应位置相乘,输出与相乘数组/矩阵的大小一致,example:8=2*4
tips:
tips:
img_1= np.pad(img_0, pad_width, mode, **kwargs)
参数名 | 参数值 | 效果 |
---|---|---|
img_0 | 待填充的原图像/数组 | |
pad_width | 各维度的各个方向上想要填补的长度 | |
mode | 填充的方式 | |
**kwargs | 表示填充的值,与pad_width相对应,缺省填充0(?) | |
mode | ‘constant’ | 连续填充相同的值,每个维度可以分别指定填充值 |
mode | 'edge" | 用边缘值填充 |
mode | ‘linear_ramp’ | 用边缘递减的方式填充 |
mode | ‘maximum’/‘minimum’/‘mean’/‘median’ | 最大值/最小值/均值/中位数填充 |
mode | ‘reflect’/‘symmetric’ | 对称填充 |
mode | ‘wrap’ | 用原数组后面的值填充前面,前面的值填充后面 |
tips:
from sklearn.cluster import KMeans
KMeans(n_clusters= ,max_iter= ,n_init= ,init= ,algorithm= )
参数名 | 参数值 | 效果 |
---|---|---|
n_clusters | 数字 | k值,分类的类别数 |
max_iter | 数字 | 最大迭代数 |
n_init | 默认是10 | 用不同的初始化质心运行算法的次数,一般不需要改 |
init | 初始化的k个质心 | 初始值选择的方式 |
init | ‘random’ | 随机 |
init | 默认’k-means’ | |
algorithm | 算法区别 | |
algorithm | ‘auto’ | 根据数据值是否是稀疏 |
algorithm | ‘full’ | 传统的K-Means算法 |
algorithm | ‘elkan’ | 数据是稠密的 |
tips:
plt.sactter(x,y,size,c= ,marker= ,alpha= )
参数名 | 参数值 | 含义 |
---|---|---|
x | 数据 | 横轴数据 |
y | 数据 | 纵轴数据 |
size | 数字,默认20 | 散点的大小 |
c | ‘b’=blue /‘c’=cyan/‘g’=green/‘k’=black/‘r’=red/‘w’=wirte/‘y’=yellow | 色彩或颜色序列 |
marker | 默认’o’ | 标记的样式 |
alpha | 0-1之间 | 散点透明度 |
tips:
plt.figure(num= ,figsize= ,dpi= ,facecolor= ,edgecolor= ,frameon= )
参数名 | 参数值 | 作用 |
---|---|---|
num | 图像编号或名称,数字为编号 ,字符串为名称,不指定调用figure时就会默认从1开始 | |
figsize | 指定figure的宽和高,单位为英寸 | |
dpi | 参数指定绘图对象的分辨率,即每英寸多少个像素 | |
facecolor | 背景颜色 | |
edgecolor | 边框颜色 | |
frameon | ‘y’/‘n’ | 是否显示边框 |
tips:
plt.subplot(nrows,ncols,sharex,sharey)
参数名 | 参数值 | 含义 |
---|---|---|
nrows | 数字 | 将画布划分成 i 行 |
ncols | 数字 | 将画布划分成 j 列 |
indx | 对子图编号 |
tips:
tips:
tips:
plt.grid()
原帖:https://www.jianshu.com/p/91844c5bca78,仅作常用内容整理
tips:
from tkinter import *
root= Tk()
root.title('hello world')
root.geometry('240x240') # 这里的乘号不是 * ,而是小写英文字母 x
root.mainloop()
注:有pack()、grid()、place()三种,仅整理place()和pack()
tips:
message_01.pace(x= ,y= ,relx= ,rely= ,height= ,width= ,relheight= ,relwidth= )
参数名 | 参数值 | 含义 |
---|---|---|
x,y | 起始位置的像素坐标 | |
relx,rely | 在0-1之间 | 起始位置,相对于窗体的宽高比例,相对的位置 |
height,width | 控件本身的像素高度和像素宽度 | |
relheight,relwidth | 在0-1之间 | 控件本身相对于根窗体的高度和宽度 |
注:有pack()、grid()、place()三种,仅整理place()和pack()
tips:
参数名 | 参数值 | 含义 |
---|---|---|
fill | 填充 | |
fill | ‘X’ | 水平方向填充 |
fill | ‘Y’ | 垂直方向填充 |
fill | ‘BOTH’ | 二维伸展填充 |
side | 本控件实例的布局相对于下一个控件实例的方位 | |
side | ‘TOP’/‘RIGHT’/‘LEFT’/‘RIGHT’/‘BOTTOM’ |
tips:
label_1 = tk.Label(root,text='old',fg='blue',font=("黑体",80))
label_1.pack()
#当需要修改Lb内容时,调用以下语句
label_1.configure(text='new')
2)使用内部变量svar=tk.StringVar()
先定义一个内部变量svar,在初始化Label时赋值给Label的参数textvarible,再通过svar.set()修改svar,来修改Label内的文本内容
svar=tkinter.StringVar()
svar.get('old')
label_2= tk.Label(root,textvariable=svar,fg='blue',font=("黑体",80))
label_2.pack()
#当需要修改Lb内容时,调用以下语句
svar.set('new') # 获取当前时间
区别:entry是接收单行文本输入的控件
tips:
from tkinter import *
import time
import datetime
def gettime():
s=str(datetime.datetime.now())+'\n'#读取时间
txt.insert(END,s)#后缀增加
root.after(1000,gettime) # 每隔1s调用函数 gettime 自身获取时间
root=Tk()
root.geometry('320x240')
txt=Text(root)#在root窗口中生成txt文本
txt.pack()#文本框位置
gettime()
root.mainloop()
tips:
函数 | 用途 |
---|---|
get() | 取值 |
delete(其实位置,终止位置) | 删除 |
tips:
button_1=tk.Button(窗体名,text=' ',command= )
参数名 | 参数值 | 含义 |
---|---|---|
text | 按钮内的文字 | |
command | 触发按钮需要执行的功能函数名 |
**
关于command:
1)直接调用函数:表达式为“command=函数名”,函数名后面不加括号,也不能传递参数。
2)调用参数:表达式为“command=lambda:函数名(参数列表)”,其中参数列表使用.get()的形式
3)examples:
from tkinter import *
def run1():
a = float(inp1.get())
b = float(inp2.get())
s = '%0.2f+%0.2f=%0.2f\n' % (a, b, a + b)
txt.insert(END, s) # 追加显示运算结果
inp1.delete(0, END) # 清空输入
inp2.delete(0, END) # 清空输入
def run2(x, y):
a = float(x)
b = float(y)
s = '%0.2f+%0.2f=%0.2f\n' % (a, b, a + b)
txt.insert(END, s) # 追加显示运算结果
inp1.delete(0, END) # 清空输入
inp2.delete(0, END) # 清空输入
# 方法-直接调用 run1()
btn1 = Button(root, text='方法一', command=run1)
btn1.place(relx=0.1, rely=0.4, relwidth=0.3, relheight=0.1)
# 方法二利用 lambda 传参数调用run2()
btn2 = Button(root, text='方法二', command=lambda: run2(inp1.get(), inp2.get()))
btn2.place(relx=0.6, rely=0.4, relwidth=0.3, relheight=0.1)
**
Button1.configure(text=' ', state=' ')
参数名 | 参数值 | 含义 |
---|---|---|
text | 按钮内的文字 | |
state | ‘normal’/‘active’/disabled’ | 按钮功能状态 |
tips:
rd1=Radiobutton(窗体变量名,text=' ',variable= ,value= ,command= )
参数名 | 参数值 | 含义 |
---|---|---|
text | 按钮内的文字 | |
variable | 给该组单选框按钮设置共同变量名,用于读取返回 | |
value | 给当前单个单选框按钮编码,设置返回数值 | |
command | 触发按钮需要执行的功能函数名 |
通过“variable中设置的变量名.get()”来获得被选中实列的value值
2. examples:
from tkinter import *
def Mysel():
dic = {0:'甲',1:'乙',2:'丙'}
s = "您选了" + dic.get(var.get()) + "项"
lb.config(text = s)
root = Tk()
root.title('单选按钮')
lb = Label(root)
lb.pack()
var = IntVar()
rd1 = Radiobutton(root,text="甲",variable=var,value=0,command=Mysel)
rd1.pack()
rd2 = Radiobutton(root,text="乙",variable=var,value=1,command=Mysel)
rd2.pack()
rd3 = Radiobutton(root,text="丙",variable=var,value=2,command=Mysel)
rd3.pack()
root.mainloop()
tips:
svar= tk.StringVar()#保存地址变量
filename = tk.filedialog.askopenfilename() #弹出文件选择对话框
svar.set(filename)#保存地址
tips:
tf.keras.utils.to_categorical(
y,
num_classes=None
)
参数名 | 参数值 | 含义 |
---|---|---|
y | 待编码数据 | |
num_classes | 标签类别总数 |
# 数据预处理
import tensorflow as tf
#将标签向量换成one-hot编码
num_classes = 10
y_train = tf.keras.utils.to_categorical(y_train, num_classes)
y_test = tf.keras.utils.to_categorical(y_test, num_classes)
print(y_train.shape, 'ytrain')
# 图像数据统一并缩小
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /= 255
x_test /= 255
在anaconda下的jupyter中安装tensorflow方法链接
from keras.models import Sequential
from keras.layers import Dense, Activation,Conv2D,MaxPooling2D,Flatten,Dropout
from tensorflow import optimizers
#建立模型
model = tf.keras.Sequential()
**只记录常用的主要参数,参数表并不全**
tips:
model.add(Conv2D(kernel_size,strides=( , ),padding=' '))
参数名 | 参数值 | 含义 |
---|---|---|
kernel_size | (x,y) or 数字 | 卷积核的大小,如果是方阵可以直接写成一个数 |
strides | (x,y) | 控制卷积在x、y方向上的步长,,默认是卷积核尺寸 |
padding | 边缘填充,默认是不填充 | |
padding | ‘same’ | 通过kernel_size 缩小了维度,但是四周会填充 0,保持原先的维度 |
padding | ’valid’ | 存储不为 0 的有效信息 |
tips:
1、功能:对一个层的输出施加激活函数。
2、语法参数:
model.add(Activation(activation=' '))
参数名 | 参数值 | 含义 |
---|---|---|
activation | 激活函数 | |
activation | ‘relu’ | 常用激活函数 |
activation | ‘softmax’ | 常用激活函数 |
activation | ‘Sigmoid’ | 常用激活函数 |
activation | ‘Tanh’ | 常用激活函数 |
tips:
model.add(MaxPooling2D(pool_size=(2, 2), strides=None, padding='valid'))
参数名 | 参数值 | 含义 |
---|---|---|
pool_size | (x,y),默认是(2,2) | 池化核的尺寸 |
strides | (x,y) | 控制在x、y方向上的步长,默认是池化核尺寸 |
padding | 边缘填充,默认是不填充 | |
padding | ‘same’ | 通过kernel_size 缩小了维度,但是四周会填充 0,保持原先的维度 |
padding | ’valid’ | 存储不为 0 的有效信息 |
tips:
model.add(Flatten())
tips:
model.add(Dense(units=' ', activation=' ',input_shape=' '))
参数名 | 参数值 | 含义 |
---|---|---|
units | 指定该网络层中的神经元个数 | |
activation | 激活函数,默认None,如果不是 None,则会应用于输出 | |
activation | ‘relu’ | 常用激活函数 |
activation | ‘softmax’ | 常用激活函数 |
activation | ‘Sigmoid’ | 常用激活函数 |
activation | ‘Tanh’ | 常用激活函数 |
input_shape | 输入数据的形状,全连接层的第一层必须指明 |
tips:
model.add(Dropout(rate,seed=None))
参数名 | 参数值 | 含义 |
---|---|---|
rate | 0-1之间 | 每个元素以rate的概率丢弃,也就是变成了0,在训练和预测时都生效(?) |
seed | 随机种子 |
model.compile(loss=' ', optimizer=' ', metrics=' ')
参数名 | 参数值 | 含义 |
---|---|---|
loss | 损失函数 | |
loss | ’mse’ | 均方差损失函数 |
loss | ‘categorical_crossentropy’/'spare_categorical_crossentropy | 多分类交叉熵损失函数(当使用one-hot编码时用前一个) |
loss | ’binary_crossentropy’ | 二分类交叉熵损失函数(与激活函数 Sigmoid 搭配使用) |
optimizer | 优化器 | |
optimizer | ‘sgd’ | 优化器 |
optimizer | ‘adagrad’ | 优化器 |
optimizer | ‘adadelta’ | 优化器 |
optimizer | ‘adam’ | 优化器 |
metrics | 训练模型时的评价指标 | |
metrics | ‘accuracy’ | |
metrics | ‘binary_accuracy’ | 二分类 |
metrics | ‘categorical_accuracy’ | 多分类 |
model.fit(x_train, y_train, batch_size= , epochs=10,shuffle= ,validation_data=(x_val, y_val))
参数名 | 参数值 | 含义 |
---|---|---|
x_train, y_train | 训练数据 | |
batch_size | 数字 | 批量大小 |
epochs | 数字 | 迭代次数 |
shuffle | ’true’/‘false’ | 每轮训练前是否打乱数据 |
validation_data | (测试集的输入特征,测试集的标签) | 划分测试集数据,与validation_split二选一 |
validation_split | 0-1之间的小数 | 划分测试集数据,与validation_data二选一,测试集于训练集的比例 |
validation_freq | 默认为1 | 测试频率,每隔多少轮训练并使用测试集计算和输出一次评测指标 |
verbose | 控制输出信息显示的方式 | |
verbose | 0 | 不在标准输出流输出 |
verbose | 1 | 输出进度条记录 |
verbose | 2 | 每个epoch输出一行记录 |
score = model.evaluate(x_test,y_test,batch_size = 32)
model.predict(x, batch_size, verbose)