python学习笔记(2)

函数使用(部分介绍):

  1. randn函数:返回一个或一组样本,具有标准正态分布。参数为每个维度的大小

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

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

  3. np.dot:矩阵乘法

  4. range:的返回值就是一个list,在你调用range的时候,Python会产生所有的元素。而xrange是一个特别设计的可迭代对象,它在建立的时候仅仅保存终止值。

  5. fit()函数:求得训练集X的均值,方差,最大值,最小值这些训练集X固有的属性。可以理解为一个训练过程

  6. transform(): 在fit的基础上,进行标准化,降维,归一化等操作(看具体用的是哪个工具,如PCA,StandardScaler等)

  7. fit_transform(): 是fit和transform的组合,既包括了训练又包含了转换。

  8. with open(路径,'r',encoding='')as f:打开路径指定文件

  9. tf_dic.get(w,0):get函数的用法是在字典中找到对应的key对应的值,如果不存在,则设置为0

  10. sorted函数的参数:要排序的序列,进行排序的依据,reverse为false时是升序排序,为true时表示是降序排序

  11. #lambda:匿名函数,语法:参数:函数体

  12. os.path.dirname()#去掉文件名,返回目录 

  13. os.path.abspath:获取当前脚本的完整路径

  14. os.path.exists():#判断括号里的文件是否存在的意思,括号内的可以是文件路径。

  15. urllib.request.urlretrieve(url, filename=None, reporthook=None, data=None)

    1. 将URL表示的网络对象复制到本地文件。如果URL指向本地文件,则对象将不会被复制,除非提供文件名。返回一个元组()(filename,header),

      1. 其中filename是可以找到对象的本地文件名,header是urlopen()返回的对象的info()方法(用于远程对象)。

      2. 第二个参数(如果存在)指定要复制到的文件位置(如果没有,该位置将是一个生成名称的tempfile)。第三个参数,如果存在,则是一个回调函数,它将在建立网络连接时调用一次,并且在此后每个块读取后调用一次。这个回调函数将传递三个参数;到目前为止传输的块计数,以字节为单位的块大小,以及文件的总大小。

      3. 第三个参数可能是-1,在旧的FTP服务器上,它不返回文件大小以响应检索请求。

  16. with gzip.open(file_path, 'rb') as f:
    1. 压缩文件打开后,拥有普通文件对象一样的方法,如read、readline、readlines、write、writelines等
    2. 读取内容,可以获得解压缩后的数据
    3. 写入内容,能够完成对数据的压缩
  17.  np.frombuffer:用于实现动态数组。接受 buffer 输入参数,以流的形式读入转化成 ndarray(ndarray对象是用于存放同类型元素的多维数组) 对象。
  18. pickle.dump(dataset, f, -1)#将 Python 中的对象序列化成二进制对象,并写入文件;
  19. pickle.load(f)#读取指定的序列化数据文件,并返回对象。
  20. enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
  21. astype()方法强制转换数据的类型
  22. f.readline() #用于读取文件中的一行,包含最后的换行符“\n”
  23. string.punctuation:找出字符串中的所有的标点
  24. re.escape: 可以对字符串中所有可能被解释为正则运算符的字符进行转义的应用函数。如果字符串很长且包含很多特殊技字符,而你又不想输入一大堆反斜杠,或者字符串来自于用户(比如通过raw_input函数获取输入的内容),且要用作正则表达式的一部分的时候,可以使用这个函数。
  25. str.format():基本语法是通过 {} 和 : 来代替以前的 % 。format 函数可以接受不限个参数,位置可以不按顺序。
  26. re.compile()是用来优化正则的,它将正则表达式转化为对象
  27. pattern.sub:会逐个找出text(string)中与field_pat(pattern)中匹配的字符串并将其替换成replacement(repl)返回的字符串。
  28. filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表
    1. 该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
  29. ' '.join():将括号中的容器(可以是字符串,列表,元组等)中的元素拆分以‘ ’中的的符号分割,并返回一个字符串
  30. startswith():#用于检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False。如果参数 beg 和 end 指定值,则在指定范围内检查。
  31. set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。
  32. items() 函数以列表返回可遍历的(键, 值) 元组数组。
  33. keys() 方法以列表形式(并非直接的列表,若要返回列表值还需调用list函数)返回字典中的所有的键。
  34. sign()是Python的Numpy中的取数字符号(数字前的正负号)的函数。
  35. cmp_to_key:将比较函数(comparison function)转化为关键字函数
  36. reverse()方法没有返回值,但是会对列表的元素进行反向排序。
  37. pickle.load(f)#读取指定的序列化数据文件,并返回对象。
  38. pickle.dump(self.A_dic,f):将 Python 中的对象序列化成二进制对象,并写入文件;
  39. line.strip():用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
  40. if not line:判断line是否为null
  41. extend(list)#
    1. 将分割出来的每一个部分进行标记
    2. 用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
  42. find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1
  43. os.path.join()函数:连接两个或更多的路径名组件
    1. 如果各组件名首字母不包含’/’,则函数会自动加上
    2. 如果有一个组件是一个绝对路径,则在它之前的所有组件均会被舍弃
    3. 如果最后一个组件为空,则生成的路径以一个’/’分隔符结尾
  44. write()可以向文件中写入指定内容。
  45. TfidfTransformer():
    1. 输入:词频TF
    2. 输出:词频逆反文档频率TF-IDF(即词频TF与逆反文档频率IDF的乘积,IDF的标准计算公式为 :idf=log[n/(1+df)],其中n为文档总数,df为含有所计算单词的文档数量,df越小,idf值越大,也就是说出现频率越小的单词意义越大)
  46. train_test_split,所在包:sklearn.model_selection,功能:划分数据的训练集与测试集
        #参数:特征数据和标签数据,测试集/训练集的大小,随机种子(一个整数),其实就是一个划分标记,对于同一个数据集,如果- rondom_state相同,则划分结果也相同。
  47. jieba.cut生成的是一个生成器,generator,也就是可以通过for循环来取里面的每一个词
        jieba.lcut 直接生成的就是一个list
  48. split函数
    1. 当不给split函数传递任何参数时,分隔符sep会采用任意形式的空白字符:空格、tab、换行、回车以及formfeed。
    2. maxsplit参数表明要分割得到的list长度。
  49. os.makedirs:创建文件夹
  50. urllib.request.urlopen(url):urlopen 返回一个类文件对象
  51. sys.stdout.flush():刷新缓存
  52. requests.Session():一个请求会话,提供cookie持久性、连接池和配置。
  53. response = session.get(URL, params=params, stream=True):向网站发起请求,并获取响应对象
  54. zipfile.ZipFile:用于读写 ZIP 文件的类。
  55.  zipfile.ZipFile.extractall(path):将存档中的所有成员提取到当前工作目录。“path”指定要提取到的不同目录。“成员”是可选的,必须是namelist()返回的列表的子集(返回按名称排序的归档成员列表)。
  56. subprocess.call()则可以调用windows系统cmd命令行执行额外的命令。
  57. glob.glob()函数将会匹配给定路径下的所有pattern,并以列表形式返回。
  58.  hasattr() 函数用于判断对象是否包含对应的属性。
  59.  np.tile:把数组沿各个方向复制
  60.  注意设置关键字参数需要明确设置,否则默认是覆盖第一个参数!!
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from keras.models import Sequential from keras.layers import Dense from pyswarm import pso import matplotlib.pyplot as plt from sklearn.preprocessing import StandardScaler from sklearn.metrics import mean_absolute_error from sklearn.metrics import mean_squared_error from sklearn.metrics import r2_score file = "zhong.xlsx" data = pd.read_excel(file) #reading file X=np.array(data.loc[:,'种植密度':'有效积温']) y=np.array(data.loc[:,'产量']) y.shape=(185,1) # 将数据集分为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X,y, test_size=0.25, random_state=10) SC=StandardScaler() X_train=SC.fit_transform(X_train) X_test=SC.fit_transform(X_test) y_train=SC.fit_transform(y_train) y_test=SC.fit_transform(y_test) print("X_train.shape:", X_train.shape) print("X_test.shape:", X_test.shape) print("y_train.shape:", y_train.shape) print("y_test.shape:", y_test.shape) # 定义BP神经网络模型 def nn_model(X): model = Sequential() model.add(Dense(8, input_dim=X_train.shape[1], activation='relu')) model.add(Dense(12, activation='relu')) model.add(Dense(1)) model.compile(loss='mean_squared_error', optimizer='adam') return model # 定义适应度函数 def fitness_func(X): model = nn_model(X) model.fit(X_train, y_train, epochs=60, verbose=2) score = model.evaluate(X_test, y_test, verbose=2) print(score) # 定义变量的下限和上限 lb = [5, 5] ub = [30, 30] # 利用PySwarm库实现改进的粒子群算法来优化BP神经网络预测模型 result = pso(fitness_func, lb, ub) # 输出最优解和函数值 print('最优解:', result[0]) print('最小函数值:', result[1]) mpl.rcParams["font.family"] = "SimHei" mpl.rcParams["axes.unicode_minus"] = False # 绘制预测值和真实值对比图 model = nn_model(X) model.fit(X_train, y_train, epochs=60, verbose=2) y_pred = model.predict(X_test) y_true = SC.inverse_transform(y_test) y_pred=SC.inverse_transform(y_pred) plt.figure() plt.plot(y_true,"bo-",label = '真实值') plt.plot(y_pred,"ro-", label = '预测值') plt.title('神经网络预测展示') plt.xlabel('序号') plt.ylabel('产量') plt.legend(loc='upper right') plt.show() print("R2 = ",r2_score(y_test, y_pred)) # R2 # 绘制损失函数曲线图 model = nn_model(X) history = model.fit(X_train, y_train, epochs=60, validation_data=(X_test, y_test), verbose=2) plt.plot(history.history['loss'], label='train') plt.plot(history.history['val_loss'], label='test') plt.legend() plt.show() mae = mean_absolute_error(y_test, y_pred) print('MAE: %.3f' % mae) mse = mean_squared_error(y_test, y_pred) print('mse: %.3f' % mse)
06-10

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值