当前位置:   article > 正文

Python 各种资料收集和笔记_python参考文献及其原始资料、所需相关资料

python参考文献及其原始资料、所需相关资料


各种参考资料都在参考文献中有链接

python 画图

基本语法

zip 函数

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
参考资料

glob()

glob模块是最简单的模块之一,内容非常少。用它可以查找符合特定规则的文件路径名。跟使用windows下的文件搜索差不多。查找文件只用到三个匹配符:””, “?”, “[]”。””匹配0个或多个字符;”?”匹配单个字符;”[]”匹配指定范围内的字符,如:[0-9]匹配数字。

glob.glob()

返回所有匹配的文件路径列表。它只有一个参数pathname,定义了文件路径匹配规则,这里可以是绝对路径,也可以是相对路径。下面是使用glob.glob的例子:

import glob

#获取指定目录下的所有图片
print (glob.glob(r"/home/qiaoyunhao/*/*.png"),"\n")#加上r让字符串不转义

#获取上级目录的所有.py文件
print (glob.glob(r'../*.py')) #相对路径
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
'
运行
glob.iglob()

获取一个可编历对象,使用它可以逐个获取匹配的文件路径名。与glob.glob()的区别是:glob.glob同时获取所有的匹配路径,而glob.iglob一次只获取一个匹配路径。这有点类似于.NET中操作数据库用到的DataSet与DataReader。下面是一个简单的例子:

import glob
#父目录中的.py文件
f = glob.iglob(r'../*.py')
print (f) #<generator object iglob at 0x00B9FF80>
for py in f:
    print (py)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
'
运行

参考资料

scipy 篇

Scipy是一个用于数学、科学、工程领域的常用软件包,可以处理插值、积分、优化、图像处理、常微分方程数值解的求解、信号处理等问题。它用于有效计算Numpy矩阵,使Numpy和Scipy协同工作,高效解决问题。
参考资料:https://www.jianshu.com/p/6c742912047f

numpy 篇

NumPy是Python语言的一个扩充程序库。支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。Numpy内部解除了Python的PIL(全局解释器锁),运算效率极好,是大量机器学习框架的基础库!
参考资料:http://www.numpy.org/
np.pad()常用与深度学习中的数据预处理,可以将numpy数组按指定的方法填充成指定的形状。(https://blog.csdn.net/hustqb/article/details/77726660)

Sklearn 篇

MinMaxScaler

归一化函数
fit_transform(): 就是先拟合数据,然后转化它将其转换为标准形式,一般应用在训练集中
tranform: 通过找中心等实现标准化,一般用在测试集中。
参考文献

LabelBinarizer

标签二值化 one-hot编码

文件操作

获取文件的路径:
参考资料:https://blog.csdn.net/bestallen/article/details/52078990
https://blog.csdn.net/m0_37995876/article/details/79653663

path=(os.path.abspath(os.path.dirname(__file__)));
print(path)
  • 1
  • 2

文件合并

参考资料
参考资料:
https://blog.csdn.net/weixin_40490880/article/details/84066842
https://blog.csdn.net/u013421629/article/details/77712630
https://www.cnblogs.com/wangbin2188/p/6813430.html
主要的思路就是逐个读取文件,然后整个写入到新的文件中

import os
import shutil
N=input("N:")
N=int(N)
path=(os.path.abspath(os.path.dirname(__file__)));
print(path)
outfile=path+'\\'+'result.txt';
p=open(outfile,'a+')
for i in range(1,N+1):
	filename=path+'\\1_'+str(i)+".txt";
	k=open(filename,'r+');
	#shutil.copyfileobj(filename,outfile);
	p.write(k.read()+'\n')
	k.close()
	print(i);
	#print(filename);
p.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

读取二进制文件

使用struct
参考资料:https://blog.csdn.net/Jeanphorn/article/details/45478295
Python struct.pack() Examples
各种函数

产生随机数

参考资料

Pandas

读取txt文件

和读取.csv文件一致

    cols=["bedrooms","bathrooms","area","zipcode","price"]
    df=pd.read_csv(inputPath,sep=" ",header=None,names=cols)

  • 1
  • 2
  • 3

保存csv文件

参考文献1
参考文献2

    data_path=".\model\program\\train\data"
    label_path=".\model\program\\train\label"
    # data 的数据格式 [300,1001,2],300个文件,每个文件1001行,2列
    # 也可以使用pandas ,但有人说过pandas模块的to_csv方法实现将二维的list转为csv,但是同样存在DataFrame结构会将数据去重,默认第一列作为主键,且主键唯一。若元数据中存在重复的主键,这就改变了元数据。
    for i,d in enumerate(data):
        n=str(i);
        filename=n+'_data'+'.csv';
        with open(os.path.join(data_path, filename), "w") as f:           
            writer = csv.writer(f)
            for a in d:
                writer.writerow(a)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

df.drop()

删除表中某一行或者某一列使用drop,不删除原表中的数据,而是返回另一个dataframe来存放删除后的数据。
参考文献

文件地址操作

   inputPath="D:\MYDATA\\test-code\Houses-dataset\Houses Dataset";
   inputInfoPath=os.path.sep.join([inputPath,"HousesInfo.txt"])
  • 1
  • 2

os.path.sep.join

os.sep:
在Windows和Linux中:
Windows 路径 C:\Users\Public\Desktop
Linux路径 ./user/python
使用os.sep的话,就不用考虑这个了,os.sep根据你所处的平台,自动采用相应的分隔符号
join()
join: 连接字符串数组,将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串
语法:
‘sep’.join(seq)
参数说明:
sep:分隔符。可以为空
seq: 需要连接的元素序列、字符串、元组、字典
解释:以seq为分隔符,将seq所有的元素合并成一个新的字符串
返回值:返回一个以分隔符sep连接各个元素后生成的字符串
os.path.join()
语法: os.path.join(path1[,path2[,…]])
返回值:将多个路劲组合后返回
注:第一个绝对路径之前的参数将被忽略
#对序列进行操作(分别使用’ ‘与’:'作为分隔符)

>>> seq1 = ['hello','good','boy','doiido']
>>> print ' '.join(seq1)
hello good boy doiido
>>> print ':'.join(seq1)
hello:good:boy:doiido


#对字符串进行操作

>>> seq2 = "hello good boy doiido"
>>> print ':'.join(seq2)
h:e:l:l:o: :g:o:o:d: :b:o:y: :d:o:i:i:d:o


#对元组进行操作

>>> seq3 = ('hello','good','boy','doiido')
>>> print ':'.join(seq3)
hello:good:boy:doiido


#对字典进行操作

>>> seq4 = {'hello':1,'good':2,'boy':3,'doiido':4}
>>> print ':'.join(seq4)
boy:good:doiido:hello


#合并目录

>>> import os
>>> os.path.join('/hello/','good/boy/','doiido')
'/hello/good/boy/doiido'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

参考资料

机器学习各种函数

随机划分训练集和测试集

from sklearn.model_selection import train_test_split
from keras.callbacks import EarlyStopping
es = EarlyStopping(monitor = 'val_loss', patience = 10,mode='min')
train_x,test_x,train_y,test_y= train_test_split(data,label,test_size = 0.2)
model.fit(train_x,train_y, epochs=20, batch_size=1, shuffle = True, verbose=1,callbacks= [es],validation_split=0.1)
  • 1
  • 2
  • 3
  • 4
  • 5

监测准确性

model.evaluate(test_x,test_y)

Keras下深度学习模型性能评估

参考文章地址:https://blog.csdn.net/qq_22885109/article/details/81081977

交叉验证

机器学习模型评估的黄金标准是k-fold交叉验证。 它提供了一个对未显示数据的模型性能的可靠估计。它将训练数据集分割成k个子集,并对除一个子集外的所有子集轮流进行训练模型,并对保存的验证数据集进行模型性能评估。这个过程会重复进行,直到所有子集都有机会被提交出去的验证集。然后在创建的所有模型中对性能度量进行平均。

交叉验证通常不用于评估深度学习模型,因为计算费用更大。例如,k-fold交叉验证通常用于5或10个折叠。因此,必须构造和评估5或10个模型,这大大增加了模型的评估时间。然而,当问题足够小或者有足够的计算资源时,k-fold交叉验证可以使你对模型的性能有更小的偏差估计。在下面的示例中,我们使用来自scikit- learning Python机器学习库的方便的分层kfold类将训练数据集分割为10个折叠。折叠是分层的,这意味着该算法试图平衡每一个类中每个类的实例数。

该示例使用10个数据分片创建并评估10个模型,并收集所有分数。通过将verbose=0传递给fit()并在模型上评估()函数,可以关闭每个epoch的详细输出。性能为每个模型打印并存储,然后在运行结束时打印出模型性能的平均和标准偏差,以提供模型精度的可靠估计。

import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Dropout
from sklearn.model_selection import StratifiedKFold
 
# fix random seed for reproducibility
seed = 7
np.random.seed(seed)
 
# load dataset
X = np.loadtxt('preprocess_final.txt',usecols=(0, 1, 2, 3, 4, 5, 6),delimiter='\t')
Y = np.loadtxt('preprocess_final.txt',usecols=(7),delimiter='\t')
 
# define 10-fold cross validation test harness
kfold = StratifiedKFold(n_splits=10, shuffle=True, random_state=seed)
cvscores = []
 
for train, test in kfold.split(X, Y):
    model = Sequential()
    model.add(Dense(16, input_dim=7, activation='relu'))
    model.add(Dropout(0.5))
    model.add(Dense(16, activation='relu'))
    model.add(Dropout(0.5))
    model.add(Dense(1, activation='sigmoid'))
 
    model.compile(loss='binary_crossentropy',
              optimizer='rmsprop',
              metrics=['accuracy'])
    model.fit(X[train], Y[train], epochs=10, batch_size=32, verbose=0)
    # evaluate the model
    scores = model.evaluate(X[test], Y[test], verbose=0)
    print("%s: %.2f%%" % (model.metrics_names[1], scores[1]*100))
    cvscores.append(scores[1] * 100)
    
print("%.2f%% (+/- %.2f%%)" % (np.mean(cvscores), np.std(cvscores)))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

Keras–动态调整学习率

可参考内容:
https://blog.csdn.net/qq_36735489/article/details/93215127
https://blog.csdn.net/zzc15806/article/details/79711114

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/843509
推荐阅读
相关标签
  

闽ICP备14008679号