文章目录
一、数据存储 1.1 倒计时 1.2 os库 1.3 字符串操作 1.4 文件操作 1.5 列表操作 1.6 元组 1.7 字典
二、文本处理及可视化 2.1 jieba分词 2.2 集合操作 2.3 pdf文件读取 2.4 参数传递 2.5 变量作用域
三、数据处理分析 3.1 Sumpy 3.2 Matplotlib 3.3 Numpy
四、Pandas 4.1 索引操作 4.2 统计函数 4.3 数据清洗 4.4 MISC
五、分类与回归
六、聚类与降维 6.1 processing 6.2 聚类 6.3 降维 6.4 机器学习步骤 6.5 图像
七、Tensorflow 7.1 评价指标-分类 7.2 评价指标-回归 7.3 激活函数 7.4 使用Keras搭建神经网络
一、数据存储
1.1 倒计时
time.strftime(“%Y:%m:%d:%H:%M:%S”) 年月日时分秒
1.2 os库
方法 含义 os.path.join(“C:\Windows”, “love.jpg”) 生成c\Windows\love.jpg路径 os.rename(“D:\test1.txt”,“D:\test2.py”) 将test1重命名为test2 os.mkdir(“C:\TEST”) 在当前目录下创建文件夹TEST os.rmdir(“C:\TEST”) 删除当前目录下的TEST文件夹
1.3 字符串操作
s = ‘华东理工大学’
操作 含义 s[-1] ‘学’ s[0:2] ‘华东’ s[0:6:2] ‘华理大’ s.lower()、s.uppper() 都转化为最小值,最大值 s.split(‘分隔符’) 返回list s.find(‘子串’) 搜索成功返回下标,搜索不到返回-1 s.replace(‘理’,‘力’) 华东力工大学 s.strip() 去除两边的空格及特殊符号(\n)
1.4 文件操作
f = open(‘path’,‘r’), f.close() 或者直接使用 with open(‘path’,‘r’) as f:
操作 含义 r 读 w 写 与’a’不同,w会清空原文件 a 追加 with open(‘2.txt’, ‘a’) as f: f.write(‘dfgddfgfg\n’) read() 读取全部内容 readline() 读取文件第一行 readlines() 读取文件的每一行返回列表 file = f.readlines() p = [x.strip() for x in file ]
1.5 列表操作
操作 含义 sort(reverse=) reverse默认是False,默认从小到大排序 append(x) 增加x到列表末尾 remove(x) 移除第一次出现的x count(x) x出现次数 extend(newlist) 将newlist逐个append到原列表后 索引操作 列表索引操作与字符串相同
1.6 元组
1.7 字典
d = dict() 键值对,键唯一且不可变:数字、字符串、元组
操作 含义 d.keys() 键列表 d.values() 值列表 d.items() 返回键-值 列表 借助lambda函数按值排序。 ①t = list(a.items()) ②t.sort(key=lambda x: x[1]) ③d = dict(t) d.get(key, default) 若key不存在返回default值,例如a = d.get(‘apple’,0)+1 d.update(a) 将字典a中的键值对逐个放入字典d,类似列表的extend操作
二、文本处理及可视化
会从头到尾写一个词云图生成代码结合字典,文件读写操作,使用jieba分词,结合字符串操作,imageio.v2读取图片,WordCloud生成词云(counts), matplotlib来show图片
2.1 jieba分词
方法 含义 jieba.add_word(‘newword’) 添加新词 jieba.lcut(‘string’) 精确模式 jieba.lcut(‘string’, cut_all=True) 全模式 jieba.lcut_for_search(‘string’) 搜索引擎模式
2.2 集合操作
集合:a、b set()
操作 含义 a & b 交集 a b a - b a - a&b a ^ b a a < b a是否为b的真子集 a <= b a是否为b的子集 a == b a与b两个集合是否相同
2.3 pdf文件读取
import pdfplumber
pdf = pdfplumber. open ( 'Attention.pdf' )
pages = pdf. pages
pages[ 0 ] . extract_text( )
2.4 参数传递
传递方式 含义 fun(2,3) 位置传递 fun(b=3,a=2) 关键字传递 fun(a, b=2), fun(7) 默认值参数传递 fun(*number) 元组类型变长 fun(**d) 字典类型变长 f = lambda x : x**3 labmda匿名函数 f(3) = 27
2.5 变量作用域
global 全局变量:在函数块中引用全局变量时需要先用global x 声明一下才能修改全局变量,否则只是修改局部变量
三、数据处理分析
3.1 Sumpy
创建符号变量 x,y=symbols(‘x y’) #x是符号变量名称,'x’是符号变量的值
opention 例子 极限 limit(sin(x)/x,x,0) 导数 z=sin(x)+x**2*exp(y) diff(z,y,1) 定积分 integrate(sin(2*x),(x,0,pi)) 求解代数方程组 solve([x**2+y**2-1, x-y], [x, y]) 级数求和 k,n=symbols(‘k n’) ,summation(k**2,(k,1,n)) 因式分解 factor()
3.2 Matplotlib
必考,画图是重点,大概率结合subplot
plt.xlabel(‘Epoch’) 添加x轴名称 plt.xlim([0,8]) 指定x轴范围 plt.xticks([0,2,4,6,8]) 指定x刻度的数目与取值 plt.legend(loc=‘upper right’)
方法 含义 plot(X, y, linestyle= , color=, marker= , label= ) 折线图 bar(name, value), 水平条形图:barh() 垂直条形图 pie(x = value, explode= , labels= ,autopct= ‘%.1f%%’, shadow= True) 饼图 sctter(name, value) 散点图 hist(x=, bins= ) 直方图 boxplot() 箱线图 figure(figsize=(w,h)) 指定图像大小 title 图像标题 xlabel 添加X轴标签,ylabel同理 xlim([0,8]) 指定X轴区间,ylim同理 xticks([0,2,4,6,8] 指定X轴取值,yticks同理 legend(loc=‘upper right’) 指定图label位置 subplot 绘制子图 suptitle 多个子图的大标题
常见的颜色字符:‘r’、‘g’、‘b’、‘y’、‘w’等 常见的线型字符:’-‘(直线)、’–‘(虚线)、’:‘(点线)等. 常用的描点标记:‘o’(圆圈)、‘s’(方块)、’^'(三角形)等
3.3 Numpy
方法 含义 a = np.array([1,3,4,6]) np.linespace(0,10,100) #0~10 分成100份 np.arange(0,5,0.1) 0~5,步长为0.1, 步长默认为1,起点默认为0 a.reshape(20,5) reshape a.flatten() 变为一维 np.random.randint(n= , size= ) 生成[0,n)之间的整数,n可以是一个数,size可以是一维也可以是二维 np.random.uniform(n= , size= ) 生成浮点数 np.loadtxt(“trade.csv”,delimiter=“,”) 加载文件 np.savetxt(‘result.csv’) 保存文件 np.zeros((a,b)), np.ones() 生成指定格式0,1矩阵 np.identify(n) 生成指定维度单位阵 a.astype(‘int’), ‘float’ 数据类型转化 a.transpose() 转置 a.sum() 求a数组总数的和 a.max() a所有元素中的最大值 np.dot(a, 2) a数组的每个元素都乘以2
四、Pandas
这章比较重要,会使用pands读取数据,数据清洗预处理,结合matplotlib,会画饼图、折线图等,会独立编写ppt里面的案例代码。
data = pd.read_csv(‘path’) 数据读取 Series pd.Series(data, index=[‘a’,‘b’,‘c’,‘d’,‘e’]) 生成pandas序列 DataFrame(data= , columns= , index= ) 数据、列名、索引
4.1 索引操作
函数名 含义 data.iloc[a,b] 选取a行b列 data.iloc[list1, list2] 选取多行多列,都是数字 data.iloc[a:b, c:d] 选取ab-1行的c d-1列数据
函数名 含义 data[‘col’] 选取col列 data[colList] 选取多列 data.loc[index, ‘col’] 选取index行, col列 data.loc[indexList, colList] 选取多行多列
4.2 统计函数
函数名 含义 data.describe() 基本统计量及分位数 data.mean() 取每一列的平均值 data.count() 返回列个数 data.max(),data.min() 按列取最大值 data.sum() 取每一列的sum data.head(n) 取前几行,默认为5 data.tail(n) 取后几行,默认为5 data.corr() 相关系数 相关矩阵plt.matshow() data.mode() 众数
4.3 数据清洗
函数名 含义 data.dropna() 某行存在空值,删去改行 data.dropna(axis=1) 某列存在空值,删除该列 data.dropna(how= ‘all’, thresh= n) how代表指定维度全空时才删除, thresh表示指定维度存在n个数时保留。 data.fillna(value= , method= ) value是单个值时,所有的空值都用该值补充,value是字典时根据键对应列,空值对应值。method可以取, ffill, bfill data.replace(value) value可以是两个值,也可以是字典 data.drop_duplicates 取出重复数据 pd.concat([data1,data2],axis = ) 需要叠加的数据,axis=0按行追加,1按列 pd.merge() how,内连接、外连接,数据库的相关操作 data.sort_index(ascending= ) 按照索引号排序,默认下ascending为True,升序 data.sort_value(by = [collist]) 按照by指定列进行排序,默认是升序 注 所有数据操作要加inplace=True
4.4 MISC
|r|<0.4 弱、 0.4<=|r|<0.7 中、 0.7<=|r| 高
pd. plotting. scatter_matrix( data)
plt. show( )
data. iloc[ condition, colist]
data. loc[ condition, colist]
五、分类与回归
会使用一种算法进行数据预处理,模型训练、预测、评估的代码。包括分类、回归、聚类
5.1 分类
算法 引入包名 名称 KNN from sklean.neighbors import KNeighborsClassifier K近邻 NB from sklearn.naive_bayes import GaussianNB 贝叶斯 SVM from sklearn.svm import SVC 支持向量机 DT from sklearn.tree import DecisionTreeClassifier 决策树 Logistic Regression from sklearn.linear_model import LogisticRegression 逻辑回归
5.2 十折交叉验证
kfold = KFold(n_splits=10, shuffle=True, random_state=seed) cv_results = cross_val_score(models[key], X, Y, cv=kfold)
5.3 回归
算法 包名 名称 LR from skelarn.linear_model import LinearRegression 线性回归
六、聚类与降维
6.1 processing
方法名称 含义 例子 归一化(MinMaxScaler) 转化为0~1之间 mms = MinMaxScaler(); x_bin = mms.fit_transform(X) 标准化(StandardScaler)
Z
=
x
−
μ
σ
Z = \frac{x-μ}{σ}
Z = σ x − μ 声明+转化 正则化(Normalizer) 去除不同特征范围不同 同上 二值化(LabelBinarizer) 二值化 同上
6.2 聚类
from sklearn. cluster import KMeans
model = KMeans( n_clusters= )
. . .
model. labels_
6.3 降维
from sklearn. decomposition import PCA
pca = PCA( n_components= )
x = pca( X)
指定n_components为降维后的维度
from mpl_toolkits. mplot3d import Axes3D
6.4 机器学习步骤
① 导入数据 ② 数据概览 ③ 数据可视化 ④ 模型评估 ⑤ 实施预测
6.5 图像
概念 含义 二值图像 0,1。1个二进制位 灰度图像 0~255。8位无符号整数, convert(‘L’) 通道分割 split 通道合并 merge 轮廓提取 filter
七、Tensorflow
会使用keras搭建序列网络、卷积网络。ppt的图像分类例子会独立编写。
7.1 评价指标-分类
名称 含义 计算公式 混淆矩阵 预测结果与真是结果组成矩阵 TP预测为正实际为正,TN预测为副实际为副,FN,预测为负实际为正,FP预测为正实际为负 精确率(metrics.precison_score) 预测为正中实际为正比例
P
=
T
P
T
P
+
F
P
P=\frac{TP}{TP+FP}
P = TP + FP TP 召回率(recall_score) 实际为正的样本中预测为正的样本
R
=
T
P
T
P
+
F
N
R=\frac{TP}{TP+FN}
R = TP + FN TP F1-Score(f1_score)
2
∗
P
∗
R
P
+
R
\frac{2*P*R}{P+R}
P + R 2 ∗ P ∗ R 准确率(accuracy_score) 预测正确的样本比例
T
P
+
T
N
T
P
+
T
N
+
F
P
+
F
N
\frac{TP+TN}{TP+TN+FP+FN}
TP + TN + FP + FN TP + TN
7.2 评价指标-回归
名称 含义 计算公式 平均绝对误差(metrics.mean_absolute_error) MAE $\frac{1}{n} \sum\limits_{i=1}^{n} \lvert y_i - \hat y_i \rvert $ 均方误差(mean_squared_error) MSE $\frac{1}{n} \sum\limits_{i=1}^{n}(y_i - \hat y_i)^2 $ 决定系数(r2_score)
R
2
R^2
R 2
R
2
=
1
−
∑
i
=
1
n
(
y
i
−
y
^
i
)
2
∑
i
=
1
n
(
y
i
−
y
ˉ
i
)
2
R^2 = 1 - \frac{\sum\limits_{i=1}^{n}(y_i-\hat y_i)^2}{\sum\limits_{i=1}^{n}(y_i - \bar y_i)^2}
R 2 = 1 − i = 1 ∑ n ( y i − y ˉ i ) 2 i = 1 ∑ n ( y i − y ^ i ) 2 ,其中
y
ˉ
=
1
n
∑
i
=
1
n
y
i
\bar y = \frac{1}{n} \sum\limits_{i=1}^{n}y_i
y ˉ = n 1 i = 1 ∑ n y i
7.3 激活函数
函数名 表达式 备注 Sigmoid
f
(
x
)
=
1
1
+
e
−
x
f(x) = \frac{1}{1 + e^{-x}}
f ( x ) = 1 + e − x 1 值域0~1 tanh
f
(
x
)
=
e
x
−
e
−
x
e
x
+
e
−
x
f(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}
f ( x ) = e x + e − x e x − e − x 值域-1~1 ReLU
f
(
x
)
=
m
a
x
0
,
x
f(x) = max{0,x}
f ( x ) = ma x 0 , x 值域>=0
7.4 使用Keras搭建神经网络
载入数据、数据预处理、构建Sequntial模型,使用compile编译模型,使用fit函数训练模型、模型评估与预测
model = tf. keras. models. Sequential( [
tf. keras. layers. Dense( 50 , input_dim= 28 * 28 , activation= 'relu' , name= 'Hidden' ) ,
tf. keras. layers. Dense( 10 , activation= 'softmax' , name= 'Output' )
] )
model = tf. keras. models. Sequential( [
tf. keras. layers. Conv2D( 32 , ( 3 , 3 ) , activation= 'relu' , input_shape= ( 28 , 28 , 1 ) ) ,
tf. keras. layers. MaxPooling2D( ( 2 , 2 ) ) ,
tf. keras. layers. Dropout( rate= 0.2 ) ,
tf. keras. layers. Flatten( ) ,
tf. keras. layers. Dense( 50 , activation= 'relu' ) ,
tf. keras. layers. Dense( 10 , activation= 'softmax' )
] )