本文描述了作者在参加百度Python小白逆袭大神课程一些亲身经历,从开始的半信半疑,到最后坚定的革命信念,给没有参加过百度课程的同学一点参考,文中有高质量的数据分析、pyecharts动态图,深度学习相关代码分享,图文并茂保证不让你失望。


目录

  • Day1:Python基础练习
  • Day2-《青春有你2》选手信息爬取
  • Day3-《青春有你2》选手数据分析
  • Day4-《青春有你2》选手识别
  • Day5-综合大作业

      误打误撞点进了“百度飞桨小白逆袭大神 课程”,加了学习微信群,感觉进了贼窝似的,哪里有这么好的事情,上课不收钱,还有奖品,我信你个鬼呀!!里面准是一群托,打算哄骗我让我报班学习的吧,告诉你们不会再上你们的当了,因为我是已经上过当了!!!

Day1:Python基础练习

居然能按时开课,群里同学叽叽喳喳,老师哔哩吧啦,班主任带货,一片繁荣景象!在我还没确认里面有什么阴谋诡计之前我是不会出声的。

不过学习我是认真的,走过路过不要错过,学一点是一点,毕竟人家是大厂。

作业一:输出 9*9 乘法口诀表(注意格式)。

来吧,先来给老师个下马威,别以为我读得书少,乘法口诀前几排我还是记得住的。

我也就用一行代码概括了,老师要惊呆了吧,后来发现好多同学就这么写的,老师估计看了也就这么 噗嗤 的一下吧。

def table():#在这里写下您的乘法口诀表代码吧!print('\n'.join(["\t".join([f'{i}*{j}={i * j:<2}' for i in range(1, j + 1)]) for j in range(1,10)]))#主要使用jion字符函数来连接列表里的元素,这样就不掉头发了!
if __name__ == '__main__':table()

- 作业二:查找特定名称文件

import os
#待搜索的目录路径
path = 'Day1-homework'
#待搜索的名称
filename = "2020"
#定义保存结果的数组
result = []
n = 1
def findfiles(path):global nfor item in os.listdir(path):if os.path.isdir(os.path.join(path, item)):findfiles(os.path.join(path, item))else:if filename in item:result.append('['+str(n)+','+"'"+os.path.join(path,item)+"'"+']')print('['+str(n)+','+"'"+os.path.join(path,item)+"'"+']')n += 1return result
if __name__ == '__main__':
findfiles(path)

没有太多亮点,里面有个套中套,所谓高大上的递归,也就这么肥事啦。后来知道 用os.walk可以一步到位,你更值得拥有。

两题下来,还没玩够。
我给老师恶作剧一下,把作业空间里的txt都写上一句话!

import os
#待搜索的目录路径
path = os.getcwd()
#待搜索的名称
filename = "2020"
#定义保存结果的数组
n = 1
def findnwrite(path):global nfor item in os.listdir(path):if os.path.isdir(os.path.join(path, item)):findnwrite(os.path.join(path, item))else:if os.path.join(path,item).endswith('.txt'):with open (os.path.join(path,item),'a+') as f:f.write('人生苦短,我用python')n += 1          return n
findnwrite(path)
  • 最后再补一刀:

改作业可能是个美女老师呢,我给她送一朵花,让她流下感动的泪水,或许还给加到101分呢。后来发现改作业都是男滴助教,白送了。。。。

from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator
import matplotlib.pyplot as plt
import numpy as np
print('送给您一朵花花!')fig = plt.figure(figsize=(12, 9),dpi= 100)
ax = fig.gca(projection='3d')
[x, t] = np.meshgrid(np.array(range(26))/26.0, np.arange(0, 555.5, 0.5)/555*16*np.pi-2*np.pi)
p = (np.pi/2)*np.exp(-t/(10*np.pi))
u = 1-(1-np.mod(3.16*t, 2*np.pi)/np.pi)**4/2
y = 2*(x**2-x)**2*np.sin(p)
r = u*(x*np.sin(p)+y*np.cos(p))
surf = ax.plot_surface(r*np.cos(t), r*np.sin(t), u*(x*np.cos(p)-y*np.sin(p)),rstride=1, cstride=1, cmap=cm.gist_rainbow_r, linewidth=0, antialiased=True)
plt.show()

别问我为啥那么优秀,我是去抄的,但是避免被别人告我,我也是小改动了一下几个参数,不信你去搜,保证我们不一样。


Day2-《青春有你2》选手信息爬取

1.完成《青春有你2》选手图片爬取,将爬取图片进行保存,保证代码正常运行> 。
2.打印爬取的所有图片的绝对路径,以及爬取的图片总数,此部分已经给出代码。请在提交前,一定要保证有打印结果。

哎呀!这不是我喜欢的题目,听说前一阵子,有人玩爬虫把自己也搭进去了,这种鸡鸣狗盗的伎俩,我是抱有一定的态度的。(其实就没学过不懂,但是也要完成作业呀!)

def crawl_pic_urls():'''爬取每个选手的百度百科图片,并保存'''with open('work/'+ today + '.json', 'r', encoding='UTF-8') as file:json_array = json.loads(file.read())headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'}for star in json_array:name = star['name']link = star['link']#!!!请在以下完成对每个选手图片的爬取,将所有图片url存储在一个列表pic_urls中!!!r = requests.get(link,headers=headers)soup = BeautifulSoup(r.text,'lxml')get_url = 'https://baike.baidu.com' +soup.find_all('div',{'class':'summary-pic'})[0].find('a').get('href')r_1 = requests.get(get_url,headers=headers)soup_1 = BeautifulSoup(r_1.text,'lxml')pic_urls = []  get_img_list = soup_1.find_all('div',{'class':'pic-list'})[0].find_all('img')for pic in get_img_list:pic_url = pic.get('src')pic_urls.append(pic_url)    #!!!根据图片链接列表pic_urls, 下载所有图片,保存在以name命名的文件夹中!!!down_pic(name,pic_urls)

作业代码自己写的就这么多了,靓汤!(我不是抄的,我不是抄的,我不是抄的。。。。)

我承认目前爬虫这方面相对比较弱,有点怂,后面有需要可以深入学习一下。
      要看小姐姐吗?

Day3-《青春有你2》选手数据分析

要求:对《青春有你2》对选手体重分布进行可视化,绘制饼状图 就是画个饼那么简单嘛!

给出了整理好的数据,表格里有选手的相关信息,身高、体重、星座等等,需要分析下然后作图。单纯完成作业是没问题,怎么才能玩出花来呢!?

  • 体重分级关键代码
df['weight']=df.weight.str[0:2].astype("int") #体重转化为整型
bins=[0,45,50,55,100]
labels=['<= 45Kg','45~50Kg','50~55Kg','>55Kg']
df['level'] = pd.cut(df['weight'], bins, labels=labels) #定制分级函数
grouped=df['weight'].groupby(df['level']).count().reset_index()#生成统计数据框
grouped.sort_values(by='weight',ascending= False, inplace= True) #原位排序
grouped

精华所在:pd.cut(df['weight'], bins, labels=labels) ,pandas的cut函数,一招制敌完成重量分级,数据处理一共用了6行,到处闪亮着pandas 的光。
      老师讲解的时候的用了一串判断呀,循环呀,我露出狡黠的一笑。不过这个函数真的好用,在很多分级的情景都可以用上,兄弟记得去查查资料继续学习一下,改变的一生可能就是这一句:)

- 出图
      正正规规的样板作业,没毛病!

import matplotlib.pyplot as plt
fig = plt.figure(dpi=150)
explode=(0.1,0.1,0,0)
plt.pie(grouped.weight, explode=explode,labels=grouped.level,\
autopct='%1.1f%%',shadow=False, startangle=90,radius=1.5)
plt.axis('equal')
plt.legend(loc="upper right",fontsize=10,bbox_to_anchor=(1.1,1.05),borderaxespad=0.85)
plt.savefig("work/result/pie_result.jpg",dpi=200,bbox_inches='tight')
plt.show()

还好吧,调整了一下,显示完成固定动作。

后面我开始给老师送买一送三啦!老师让我做体重,我把星座分布也做了,老师又要感动了吧,我这个勤奋好学的光辉形象,要在老师的心里扎根了。

  • 星座分布图
constell=df['name'].groupby(df['constellation']).count().reset_index()
constell.sort_values(by='name',ascending= False, inplace= True)fig = plt.figure(dpi=150)
explode=(0.1,0.1,0,0,0,0,0,0,0,0,0,0)
plt.pie(constell.name, explode=explode,labels=constell.constellation,\
autopct='%1.1f%%',shadow=True, startangle=90,radius=1.5)
plt.axis('equal')
plt.legend(loc="right",fontsize=10,bbox_to_anchor=(1.2,0.5),borderaxespad=0.55)
plt.savefig("work/result/pie_result1.jpg",dpi=200,bbox_inches='tight')
plt.show()

没完还有,我把刚从隔壁疫情数据分析班学来的用pyecharts画的南丁格尔玫瑰风图的模板借了过来。美美哒!可是平台对动态图不友好,没显示出来,老师估计也没空看,3000人交作业,哪里忙得过来,大家可以造起来,饼图都适用,好看又不贵,带走!就是比较反人类,比较难懂,就改的Java的,什么是Java我也不懂,我听说的。

  • 南丁格尔玫瑰风图
from pyecharts.charts import Pie
from pyecharts import options as opts
from pyecharts.globals import ThemeType
from pyecharts.render import make_snapshot
from snapshot_selenium import snapshotdef p(grouped):v=grouped.level.tolist()d=[round(i/sum(grouped.weight)*100,2) for i in grouped.weight]c = (Pie(init_opts=opts.InitOpts(width='900px', height='600px',theme=ThemeType.WHITE))
# 添加数据,设置饼图的半径,是否展示成南丁格尔图.add("", [list(z) for z in zip(v, d)],radius=["20%", "80%"],center=["50%", "60%"],rosetype="area" )# 设置全局配置项.set_global_opts(title_opts=opts.TitleOpts(title='《青春有你2》选手体重分布',pos_left='center'),legend_opts=opts.LegendOpts(is_show=True,type_="scroll",pos_top= "20%",pos_right="52%",orient="vertical"))
# 设置系列配置项.set_series_opts(label_opts=opts.LabelOpts(is_show=True,position="inside", font_size=12,formatter="{c}%",font_style="italic",font_weight="bold", font_family="Microsoft YaHei" )))return c# 生成html文档p(grouped).render_notebook()


还有一张

更换了主题配色,感觉是不是有点Low呀,嗯是有点哈! 继续晚上老师讲故事,班主任带货,我努力工作,玩得还行!**


Day4-《青春有你2》选手识别

使用经典的ResNet-50作为预训练模型识别分类青春有你小姐。

题材挺好的,我也是为了看小姐姐来的!

-划重点

那么我跟你说吧,这7天的课,最重要的就是这一节课,就是这里 深度学习的启蒙课,实现了一个深度学习的流程。当下多少人被深度学习吸引住了,有报道说,计算机要产生自主意识了,我们看过的科幻片在慢慢的变成现实。—第四工业革命 深度学习。

老师没有打算给我们讲原理,讲数学,把模块都准备好了,就是让我们爽快的体验一把。
但是没有!爽快之前要付出辛勤的劳动才能体验爽快,5位小姐姐的图片要自己找,训练集、测试集、验证集的列表文件要自己建,这都是工作量呀!

图片太少识别不准确,图片增强还么学,来不及了。 上手段,其他工具完成了图片采集,我最终搜集了639张高清图片,有没比我多,有的话我们交流下,你是不是也是用我同款的工具。

这作业的另一难度在于材料的准备。封装好的迁移学习对 训练集、测试集、验证集的列表文件 要求比较高,一有点小问题,就是一长串的报错,急人呀!

不知道大家是怎么完成的,下面我们来看这一段

**“飞桨案例之海洋鱼类识别 ”**

里面有这么一段,完成的工作内容就产生训练集、测试集、验证集的列表文件,用的是纯纯的python代码,用循环、判断写入列表文件,长太感人了! 感兴趣的感觉去学习下。

#总的图像数量
all_class_images = 0
#存放类别标签
class_label=0
# 设置要生成文件的路径
data_root_path="/home/aistudio/data/fish_image/fish_image"
#存储要写进test.txt和train.txt中的内容
trainer_list=[]
eval_list=[]
#读取每个类别,['fish_01', 'fish_02', 'fish_03']
for class_dir in class_dirs:  #每个类别的信息class_detail_list = {}eval_sum = 0trainer_sum = 0#统计每个类别有多少张图片class_sum = 0#获取类别路径path = data_root_path + "/" + class_dir# 获取所有图片img_paths = os.listdir(path)for img_path in img_paths:           # 遍历文件夹下的每个图片name_path = path + '/' + img_path     # 每张图片的路径if class_sum % 10 == 0:         # 每10张图片取一个做验证数据eval_sum += 1          # test_sum为测试数据的数目eval_list.append(name_path + "\t%d" % class_label + "\n")else:trainer_sum += 1trainer_list.append(name_path + "\t%d" % class_label + "\n")#trainer_sum测试数据的数目class_sum += 1                     #每类图片的数目all_class_images += 1                    #所有类图片的数目class_label += 1 # 说明的json文件的class_detail数据class_detail_list['class_name'] = class_dir       #类别名称,如jiangwenclass_detail_list['class_label'] = class_label          #类别标签class_detail_list['class_eval_images'] = eval_sum     #该类数据的测试集数目class_detail_list['class_trainer_images'] = trainer_sum #该类数据的训练集数目class_detail.append(class_detail_list) random.shuffle(eval_list)
with open(data_list_path + "eval.txt", 'a') as f:for eval_image in eval_list:f.write(eval_image)       random.shuffle(trainer_list)
with open(data_list_path + "train.txt", 'a') as f2:for train_image in trainer_list:f2.write(train_image)print ('生成数据列表完成!')

重点来了,这篇稿子最重要的部分有营养的地方来了!大家一定认真哈,不要开小差啦!

麻烦大了,是不是前面废话太多,以至于精彩部分,大家睡着了!!
我在百度平台公开了我这个项目,数据集都准备好,大家也可以直接去体验一把,开箱即可食用,记得点赞好评哦。有报错的地方,不用来找我,因为我也不懂,报错的都是迁移学习黑盒子里面的东西。

**《青春有你2》5位选手识别作业* 链接,难度初级

Step1、基础工作
加载数据文件
制作数据准备函数。
def data_list():name_dict = {'wangchengxuan':4,'anqi':3, 'xujiaqi':1, 'yushuxin':0, 'zhaoxiaotang':2}path="dataset/data" #图片所在文件夹address_list = []   #图片地址列表label_list = []     #标签列表for root, dirs, files in os.walk(path, topdown=False):for name in files:address = os.path.join(root, name) #获取图片路径address_list.append(address)label = address.split('/')[2]       #路径分割后,截取目录名即为标记名,开始的时候大脑里转的是map,lambda,还是apply!label_list.append(name_dict.get(label)) #截取目录名对应的标注return {'address':address_list,'label':label_list} #生成字典df = pd.DataFrame(data_list())     #代码只有一句,那么这是直插灵魂的一句。
df['address'] = df.address.str[8:] #按要求产生相对路径。
df_new=df.copy()                       #样品数据框随机打乱,按9:1比例生成 测试集,验证集,训练集列表文档。
df_new = df.sample(frac=1.0)           #打乱数据
df_validate = df_new.sample(frac=0.1)  #取同数量样本作为验证集
df_new.drop(index=df_validate.index,inplace=True) #去除测试集
df_test = df_new.sample(5)                          #随机抽取5样本作为测试集
df_train = df_new.drop(index=df_test.index)         #剩下的为训练集
len(df_train.index)### 生成数据列表文件
df_test['address'] = 'dataset/'+df_test['address']
df_test.to_csv('dataset/test_list.txt', sep=' ', index=0,header=0) #导出 验证集列表
df_validate.to_csv('dataset/validate_list.txt', sep=' ', index=0,header=0) #导出 验证集列表
df_train.to_csv('dataset/train_list.txt', sep=' ', index=0,header=0) #导出 训练集列表
#有种万箭齐发的感觉,所需要的材料已经准备完毕了,到此后面的工作已经可以自动继续运行了!

简单的说,列表–>字典–>DataFrame–>TXT。就是用前面提到的os.walk 生成图片路径列表,然后,根据文件夹名字映射标签,(映射没用上,一直想用映射),路径和标签组合成字典,然后潘大师(pandas)出场,做成了一个DataFrame.这样后面对图片路径的裁剪都变得很方便,更重要的是导出TXT 很方便。

路径
DataFrame
标签
TXT

思路非常清晰,一气呵成,打完收工!潘大师下次还用你!

你还在用遍历吗,你还在用循环吗,不行了,有计算机了,为什么要用按键的计算器呀!这一招可以普适分类图像分类任务的数据集列表的生成管理,真的好用,带一上一份吧,时候不早了,赶紧上路吧,如果没时间后面可以不看了,最精彩的已经讲完了。
代码最后跑起来是这样子:


Ai平台在GUP赋能下,跑起来是很爽的!在我脑海里的视觉效果是这样子的。项目链接在上面可以去感受体验!

自我感觉这么良好的作业,大家猜老师给我打多少分,101是不是也少了一点呀,这么革命性的创制,解放了多少劳动力呀!

答案:09(倒过来看),你在笑我装逼失败吧!估计是装逼太明显了,下次低调些了!

后面我哭着去找班主任理论去了。。。。然后再跟助教探讨了一番人生!


Day5-综合大作业

  • 作业要求

第一步:爱奇艺《青春有你2》评论数据爬取(参考链接:https://www.iqiyi.com/v_19ryfkiv8w.html#curid=15068699100_9f9bab7e0d1e30c494622af777f4ba39)
爬取任意一期正片视频下评论 评论条数不少于1000条
第二步:词频统计并可视化展示
数据预处理:清理清洗评论中特殊字符(如:@#¥%、emoji表情符),清洗后结果存储为txt文档
中文分词:添加新增词(如:青你、奥利给、冲鸭),去除停用词(如:哦、因此、不然、也好、但是) 统计top10高频词 可视化展示高频词
第三步:绘制词云 根据词频生成词云 可选项-添加背景图片,根据背景图片轮廓生成词云
第四步:结合PaddleHub,对评论进行内容审核

Balabala

大作业也就这样啦,由些零散的技能组成的,老师大概想给我们营造期末考试的感觉!确实这么短时间里把这些东西串起来了是有点难度的。我也不打算给大家分享代码了,都是体力活,这就不展开了,反正是我弄到凌晨4点。

最后,青春有你评论词云图作品:
      我放进去一朵花,它却给我一个球!生活常常都是这样子的!

散了,散了,散花了!

到最后,我还是没搞明白百度飞桨团队是干啥的,投入那么多精力然后,还不赚钱,再次让我感受到社会主义的优越性!

谢谢大家的帮助!不然作业自己真做不出来!
      关于代码的方面,希望能得到大佬的指点和帮助!

下一回合,我们江湖见!

安好!


我在百度Python小白逆袭大神课程中“打怪”欢乐之旅相关推荐

  1. 百度python小白逆袭大神系列课程day5——爱奇艺《青你2》评论爬取并分析

    day5-综合大作业写作分享 作业要求说明 完成作业所需要的准备 完整代码展示及说明 ==最终结果展示== ==所用到的文件== 可能遇到的问题(重点) day5-综合大作业写作分享 作业要求说明 完 ...

  2. python小白逆袭大神课程心得_python小白逆袭大神(深度学习7日训练营)——心得体会...

    使用过程及心得 百度飞桨(PaddlePaddle)是国内唯一功能完备的开源深度学习平台,自Paddle Fluid v1.0发布以来,飞桨陆续在开发.训练和部署全流程上进行全方面的升级. 1.在这次 ...

  3. python小白逆袭大神课程心得_Python小白逆袭大神学习心得

    学习内容 先介绍一下深度学习与Python的关系吧,Python中最重要的就是神经网络系统,它是Al实现的重要手段,而深度学习算法是用来实现神经网络的,当然了,这是老师上课讲的. 我们在这七天里大致学 ...

  4. python画饼图_百度飞桨PaddlePaddle之[Python小白逆袭大神]7天训练营

    第三次参加百度的7天训练营了 这次参加的主题是[Python小白逆袭大神],不过你别看是小白逆势...除非你一开始参加就逆袭完,不然你真的是python小白,这个课程还是有难难度的. 说一下个训练营的 ...

  5. 百度飞桨深度学习Python小白逆袭大神7日结营心得

    很有幸参加了百度飞桨的Python小白逆袭大神7天打卡营.七天的学习已经接近了尾声.现在回顾一下这次的课程,收获颇丰.相信很多参加的学员都感受颇丰,从小白入门到自主大作业完成,我们不仅了解了深度学习的 ...

  6. Python小白逆袭大神-结营心得-alading

    Python小白逆袭大神-结营心得 赶在五一前结束的Python小白逆袭大神7天打卡营结束了,经过了7天的练习,我觉得收获还是很多的.经过整理总结,进行分享. 1. 本期培训重点 本期集训营主要是一些 ...

  7. python小白逆袭大神_python小白逆天(3),Python,小白逆袭,大神,三

    Python小白逆袭大神 作业三 作业: 对<青春有你2>对选手体重分布进行可视化,绘制饼状图 这个作业是根据第二天爬取获得的json文件进行数据的处理课可视化. with open('d ...

  8. 百度深度学习paddlepaddle7日打卡——Python小白逆袭大神学习心得

    百度深度学习paddlepaddle7日打卡--Python小白逆袭大神学习心得 7日学习总结 第一天作业 第二天作业 第三天作业 第四天作业 第五天作业 7日学习总结 通过这7日打卡课程的学习,从小 ...

  9. PaddleHub百度飞桨【Python小白逆袭大神】七天打卡营心得

    第一次接触百度的paddlehub,之前有参加过CV疫情的打卡营,但是没坚持把作业做下来.这次参加打卡营吧几次作业都跟下来了.因为作者本人是做计算机视觉方向的,python之前使用的多为OpeanCV ...

最新文章

  1. 【seaborn】(1) 数据可视化,绘图风格、布局
  2. Mybatis字段模糊查询
  3. TNS-03505 oracle用户可以tnsping通,普通用户tnsping报错
  4. 2021新媒体内容生态数据报告
  5. IntegrityError at ** NOT NULL constraint failed: learning_logs_topic.owner_id
  6. 【ElasticSearch】Es 源码之 Discovery DiscoveryModule ZenDiscovery 源码解读
  7. 阿里全盘调整组织架构意味着什么?| 畅言
  8. curl get请求传递参数_使用curl调用restful API
  9. Preview on Web Server 插件
  10. 图书租赁管理系统——数据流程图
  11. 《下学梯航》(全文)
  12. 用Python分析豆瓣电影Top250
  13. 国内最新餐饮品牌全案设计十大排名(2023年榜单)
  14. Zabbix Server trapper两个命令注入漏洞(CVE-2017-2824和CVE-2020-11800)
  15. 《天天数学》连载60:二月二十九日
  16. 每次打开Photoshop显示失败恢复文件清理方法
  17. 沙盘游戏(2017绍兴市第十五届少儿信息学竞赛复赛试题)
  18. C语言练习2-14 求奇数分之一序列前N项和
  19. 堆排序--10亿个数字取出最大或者最小的10个数字
  20. 视频抓图(有硬编码解码)一获得解码后数据

热门文章

  1. 键盘上的双引号变成@了
  2. 自省,后背浮现一个崎字
  3. 看穿不揭穿,讨厌不翻脸
  4. ***VIP工具包(共4套)
  5. forcats | tidyverse家族对「分类变量」的解决方案(上)
  6. 系统集成资质培训 - 论文写作 - 大项目如何写
  7. Mysql5.7修改root密码
  8. 淘在路上宣布完成淘旅行注册
  9. VASP报错及解决方案
  10. 国能日新光伏功率预测大赛的总结