集智专栏
资源加载中,请稍后...
集智专栏

[2018.04.03直播] Python之文件

往期回顾

负基础入门Python系列汇总


直播时间 21:00

1. 页内观看(仅视频)

2. 完整观看(可发弹幕):Python:文件

3. Bilibili直播



31. 文件读写

31.1 open()

程序说明
open()
预处理代码
!cp /mnt/vol0/aipy_live/* ~/work
示例代码
# 打开目标文件,指定编码格式,生成文件对象 f = open("taijian.txt", encoding='utf-8') # 读取文本内容 print(f.readlines()) # 关闭文件 f.close()


程序说明
with..as..
预处理代码
!cp /mnt/vol0/aipy_live/* ~/work
示例代码
with open("taijian.txt", 'r', encoding='utf-8') as f: print(f.read())


31.2 numpy.loadtxt()

来自UCI Machine Learning Repository的数据集:airfoil_self_noise.dat

This problem has the following inputs:

  1. Frequency, in Hertzs.
  2. Angle of attack, in degrees.
  3. Chord length, in meters.
  4. Free-stream velocity, in meters per second.
  5. Suction side displacement thickness, in meters.

The only output is:

  1. Scaled sound pressure level, in decibels.
  • 内置函数open()的局限性
程序说明
np.loadtxt
预处理代码
!cp /mnt/vol0/aipy_live/* ~/work
示例代码
with open('airfoil_self_noise.dat') as f: aero_data = f.read() print(type(aero_data)) aero_data


程序说明
np.loadtxt()
预处理代码
!cp /mnt/vol0/aipy_live/* ~/work
示例代码
import numpy as np aero_arr = np.loadtxt('airfoil_self_noise.dat') print(type(aero_arr)) # 将数据集内样本数量赋值给变量nb_samples # >>>> show me the code <<<< nb_samples = # >>>> show me the code <<<< aero_arr
正确答案
nb_samples = aero_arr.shape[0]
程序验证过程
nb_samples == 1503
提示信息
aero_arr.shape


31.3 cv2.imread()

程序说明
cv2.imread()
预处理代码
!cp /mnt/vol0/aipy_live/* ~/work %matplotlib inline
示例代码
import cv2 import matplotlib.pyplot as plt messi = cv2.imread('messi5.jpg') print('messi.shape -> ', messi.shape) plt.imshow(messi)


  • OpenCV的默认色彩是BGR而MatplotLib的是RGB
  • 调整色彩通道格式
程序说明
cv2.imread()
预处理代码
!cp /mnt/vol0/aipy_live/* ~/work %matplotlib inline
示例代码
import cv2 import matplotlib.pyplot as plt messi = cv2.imread('messi5.jpg') # 修改messi,使图片颜色正常显示,赋值给变量messi_rgb # >>>> make messi colorful again <<<< messi_rgb = # >>>> make messi colorful again <<<< plt.imshow(messi_rgb)


细心的读者可能发现上面两个关于OpenCV的代码框是Py2版本,这并非是OpenCV只兼容Python2,而是网站后台对Python3解释器尚未安装OpenCV模块的原因。实际上Python3的代码也完全一致,可以直接运行。



32. 极简机器学习案例:机翼自激噪声预测

输入数据

  1. 频率(Hertzs)
  2. 攻角(degrees)
  3. 弦长(meters)
  4. 流速(meters per second)
  5. 吸力面位移厚度(meters)

输出结果

  1. 声压(decibels)


程序说明
Airfoil Self Noise Prediction
预处理代码
!cp /mnt/vol0/aipy_live/* ~/work
示例代码
import numpy as np from sklearn import linear_model from sklearn.metrics import mean_squared_error, r2_score from sklearn.model_selection import train_test_split aero_arr = np.loadtxt('airfoil_self_noise.dat') X = aero_arr[:,:5] y = aero_arr[:,-1] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) # 构建线性回归模型 regr = linear_model.LinearRegression() # 基于训练数据进行拟合 # >>>> replace the ____ <<<< regr.fit(____, ____) # 对测试数据做预测 # >>>> replace the ____ <<<< y_pred = regr.predict(____) # 评估预测结果 print("Mean squared error: %.2f" % mean_squared_error(y_test, y_pred)) print('Variance score: %.2f' % r2_score(y_test, y_pred))
正确答案
regr.fit(X_train, y_train) y_pred = regr.predict(X_test)
程序验证过程
y_pred.shape[0] == 301
提示信息
明确训练集、测试集的含义。

您也许喜欢这些文章

Python的seaborn.kdeplot有什么用

发表至数据科学
原问题出自知乎(https://www.zhihu.com/question/43415333) 本文介绍了核密度估计(kernel density estimation, kde)的统计学意义,用seaborn实现并横向比较不同核函数的表现。

土法神经网络 Part II:感知机

发表至系列教程
这是本系列教程的第二章。本系列教程将带领你入门深度神经网络的数学和算法基础。然后我们将效仿 TensorFlow API,自己动手用 Python 实现一个神经网络库。

爬虫需谨慎!!!那些你不知道的爬虫反爬虫套路

发表至业界新闻
作者崔广宇,携程酒店研发部开发经理,与去哪儿艺龙的反爬虫同事是好基友。携程技术中心“非著名”段子手。本文结合作者亲身工作经历,畅谈了爬虫与反爬虫的现状和各种套路,值得爬虫爱好者们一读。

文章评论(1)

promise 发表于 1月前回复
第一个例子是在强烈的暗示这个系列的下场么?