赞
踩
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
参考资料
glob模块是最简单的模块之一,内容非常少。用它可以查找符合特定规则的文件路径名。跟使用windows下的文件搜索差不多。查找文件只用到三个匹配符:””, “?”, “[]”。””匹配0个或多个字符;”?”匹配单个字符;”[]”匹配指定范围内的字符,如:[0-9]匹配数字。
返回所有匹配的文件路径列表。它只有一个参数pathname,定义了文件路径匹配规则,这里可以是绝对路径,也可以是相对路径。下面是使用glob.glob的例子:
import glob
#获取指定目录下的所有图片
print (glob.glob(r"/home/qiaoyunhao/*/*.png"),"\n")#加上r让字符串不转义
#获取上级目录的所有.py文件
print (glob.glob(r'../*.py')) #相对路径
获取一个可编历对象,使用它可以逐个获取匹配的文件路径名。与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)
Scipy是一个用于数学、科学、工程领域的常用软件包,可以处理插值、积分、优化、图像处理、常微分方程数值解的求解、信号处理等问题。它用于有效计算Numpy矩阵,使Numpy和Scipy协同工作,高效解决问题。
参考资料:https://www.jianshu.com/p/6c742912047f
NumPy是Python语言的一个扩充程序库。支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。Numpy内部解除了Python的PIL(全局解释器锁),运算效率极好,是大量机器学习框架的基础库!
参考资料:http://www.numpy.org/
np.pad()常用与深度学习中的数据预处理,可以将numpy数组按指定的方法填充成指定的形状。(https://blog.csdn.net/hustqb/article/details/77726660)
归一化函数
fit_transform(): 就是先拟合数据,然后转化它将其转换为标准形式,一般应用在训练集中
tranform: 通过找中心等实现标准化,一般用在测试集中。
参考文献
标签二值化 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)
参考资料
参考资料:
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()
使用struct
参考资料:https://blog.csdn.net/Jeanphorn/article/details/45478295
Python struct.pack() Examples
各种函数
和读取.csv文件一致
cols=["bedrooms","bathrooms","area","zipcode","price"]
df=pd.read_csv(inputPath,sep=" ",header=None,names=cols)
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)
删除表中某一行或者某一列使用drop,不删除原表中的数据,而是返回另一个dataframe来存放删除后的数据。
参考文献
inputPath="D:\MYDATA\\test-code\Houses-dataset\Houses Dataset";
inputInfoPath=os.path.sep.join([inputPath,"HousesInfo.txt"])
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'
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)
model.evaluate(test_x,test_y)
参考文章地址: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)))
可参考内容:
https://blog.csdn.net/qq_36735489/article/details/93215127
https://blog.csdn.net/zzc15806/article/details/79711114
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。