文章目录
- 一、数据存储
- 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
- 五、分类与回归
- 5.1 分类
- 5.2 十折交叉验证
- 5.3 回归
- 六、聚类与降维
- 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 元组
- tuple()
- 元组索引操作与字符串相同
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
方法 | 含义 |
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 |
np.diag(a) | 生成一个对角矩阵,元素都是a |
四、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 索引操作
- 基于位置序号选取(大概率考与loc区别)
函数名 | 含义 |
data.iloc[a,b] | 选取a行b列 |
data.iloc[list1, list2] | 选取多行多列,都是数字 |
data.iloc[a:b, c:d] | 选取ab-1行的cd-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| 高
- Scatter-matrix 矩阵图
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) | 声明+转化 | |
正则化(Normalizer) | 去除不同特征范围不同 | 同上 |
二值化(LabelBinarizer) | 二值化 | 同上 |
6.2 聚类
- KMeans
from sklearn.cluster import KMeans
model = KMeans(n_clusters= )
...
model.labels_
6.3 降维
- PCA
from sklearn.decomposition import PCA
pca = PCA(n_components= )
x = pca(X)
指定n_components为降维后的维度
- 3D图
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) | 预测为正中实际为正比例 | |
召回率(recall_score) | 实际为正的样本中预测为正的样本 | |
F1-Score(f1_score) | ||
准确率(accuracy_score) | 预测正确的样本比例 |
7.2 评价指标-回归
名称 | 含义 | 计算公式 |
平均绝对误差(metrics.mean_absolute_error) | MAE | |
均方误差(mean_squared_error) | MSE | |
决定系数(r2_score) | ,其中 |
7.3 激活函数
函数名 | 表达式 | 备注 |
Sigmoid | 值域0~1 | |
tanh | 值域-1~1 | |
ReLU | 值域>=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)),
#dropout
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')
])