2018优就业人保合作
400-650-7353
首页 > 大学生就业 > 【实训报告】Python实训报告

【实训报告】Python实训报告

2018-08-24 17:35:43 来源:优就业 手机端入口

一、python语法学习

Python是一门简洁优雅的语言,在数据处理方面有着独特的优势,

同时,python提供的类库为科学计算提供了便捷,一些复杂的算法的实现在类库中都已具备,我们需要做的就是学习类库中的库函数,合理调用,便可以实现很多功能。并且Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。

Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。

Python 是交互式语言: 这意味着,您可以在一个Python提示符,直接互动执行写你的程序。

Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。

Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。

二、人工智能算法实现

1. K-mean算法:

思想:通过随机产生的点生成聚类中心,计算样本点与聚类中心的距离,将距离最小的样本点归属于相应的聚类中心,通过分类得到相应类的数据,计算该类的平均值作为新聚类中心,继续计算样本点和聚类中心的聚类,如此重复下去,直到聚类中心不再发生改变,那么此时划分的类为最终结果。

【实训报告】Python实训报告

实现:

import matplotlib.pyplot as plt

import random as rand

import math

pl = plt.figure(figsize=(12,9),dpi=80) #参数一:画布大小 参数二:分辨率

plt.rcParams['font.sans-serif']='SimHei'

plt.rcParams['axes.unicode_minus']=False

#标记xy轴

plt.xlabel('x',color='blue',fontsize='25')

plt.ylabel('y',color='blue',fontsize='25')

#横纵坐标刻度

plt.xticks((0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90),fontsize='20')

plt.yticks((100,150,200,250,300,350,400,450,500,550,600,650,700,750,800),fontsize='20')

x1 = [10,13,17,67,35,1,10,12,8,1,32,3,90,1,16,31,25] #横坐标,消费周期天数

y1 = [317,147,172,194,789,190,281,142,186,226,287,499,181,172,190,271,382] #纵坐标,平均每天消费金额

z1 = []#用来存放聚类中心

#随机生成三个聚点

for i in range(3):

index = rand.randint(0,16)

z1.append([x1[index],y1[index]])

def K_mean():

# 用来存放分类结果

a = []

b = []

c = []

#记录插入a,b,c三类中的下标

aindex = 0

bindex = 0

cindex = 0

# 聚类中心

center1 = z1[0]

center2 = z1[1]

center3 = z1[2]

for i in range(17):

dis1 = math.sqrt((x1[i] - center1[0]) ** 2 + (y1[i] - center1[1]) ** 2)

dis2 = math.sqrt((x1[i] - center2[0]) ** 2 + (y1[i] - center2[1]) ** 2)

dis3 = math.sqrt((x1[i] - center3[0]) ** 2 + (y1[i] - center3[1]) ** 2)

minDis = min(dis1,dis2,dis3)

if minDis == dis1:

a.(aindex,[x1[i],y1[i]])

aindex += 1

elif minDis == dis2:

b.(bindex,[x1[i],y1[i]])

bindex += 1

elif minDis == dis3:

c.(cindex,[x1[i],y1[i]])

cindex += 1

#计算新的聚类中心

center1_x = 0

center1_y = 0

center2_x = 0

center2_y = 0

center3_x = 0

center3_y = 0

a_len = a.__len__()

if a_len != 0:

for i in range(a_len):

center1_x += a[i][0]

center1_y += a[i][1]

center1 = [center1_x/a_len,center1_y/a_len]

b_len = b.__len__()

if b_len != 0:

for i in range(b_len):

center2_x += b[i][0]

center2_y += b[i][1]

center2 = [center2_x / b_len, center2_y / b_len]

c_len = c.__len__()

if c_len != 0:

for i in range(c_len):

center3_x += c[i][0]

center3_y += c[i][1]

center3 = [center3_x / c_len, center3_y / c_len]

#更新聚类中心

z1[0] = center1

z1[1] = center2

z1[2] = center3

return {'a':a,'b':b,'c':c,'center1':center1,'center2':center2,'center3':center3}

for i in range(20):

abc = K_mean()

a = abc['a']

b = abc['b']

c = abc['c']

for i in range(a.__len__()):

plt.scatter(a[i][0],a[i][1],color="red",marker='*') #画散列点

for i in range(b.__len__()):

plt.scatter(b[i][0],b[i][1],color="blue",marker='o') #画散列点

for i in range(c.__len__()):

plt.scatter(c[i][0],c[i][1],color="green",marker='v') #画散列点

plt.legend(['a:red','b:blue','c:green'],fontsize=20)

ax = plt.gca() #获取坐标信息

ax.spines['right'].set_color('none')#截取右边的边框

ax.spines['top'].set_color('none')#截取上边的边框

plt.savefig('C:/Users/WP/Desktop/picture/www.png')

plt.show()

2. KNN算法:

思想:给出一堆数据,这些数据部分属于同一类别,因此,这堆数据可以分为几大类。然后给出样本点,计算样本点和这堆数据的距离,将距离从小到大排序,将最小的几个距离统计起来,查看这些数据所属类别,从而得出样本点的类别。

实现:

import math

import xlrd

data = xlrd.open_workbook(r'C:\Users\WP\PycharmProjects\movie\movies.xlsx') # 打开xls文件

table = data.sheets()[0] # 打开第一张表

nrows = table.nrows # 获取表的行数

allData = []

x = []

y = []

z = []

for i in range(nrows): # 循环逐行打印

if i == 0: # 跳过第一行

continue

if i == (nrows-1):

new = table.row_values(i)[:5] #获取唐人街探险数据

else:

x.append(table.row_values(i)[2:3]) #获取搞笑镜头

y.append(table.row_values(i)[3:4]) #获取拥抱镜头

z.append(table.row_values(i)[4:5]) #获取打斗镜头

allData.append(table.row_values(i)[:6]) # 取前十三列

#Knn算法

def Knn(a,b,c,n):

allDis = []

for i in range(12):

dis = math.sqrt((n[2]-a[i][0])**2+(n[3]-b[i][0])**2+(n[4]-c[i][0])**2)

allDis.append([dis,i]) #保存距离并记录属于第几条记录

allDis.sort() #对距离进行排序

return allDis[:5] #获取唐人街探险距离最近的5个聚点

b = Knn(x,y,z,new) #调用Knn算法

#对Knn算法结果进行统计并得出唐人街探险所属类型

o = 0

p = 0

q = 0

for i in range(12):

for j in range(5):

if b[j][1] == i:

if allData[i][5] == '喜剧片':

o += 1

elif allData[i][5] == '动作片':

p += 1

else:

q += 1

count = max(o,p,q)

if o == count:

print("唐人街探险是喜剧片")

elif p == count:

print('唐人街探险是动作片')

else:

print('唐人街探险是爱情片')

三、网络爬虫

爬虫就是爬出网络上的一些数据,平时我们可以右键网上数据,点击下载,从而获取网上的资源,但是对于大量的网上数据,通过爬虫程序,能够方便快捷的获取到大量需要的数据。

思想:通过urllib库中的函数,打开指定url下的page,从而获取整个html,通过regularexpress搜索全部匹配的数据,最后将所有的数据下载下来。

实现:

# coding: utf-8

import urllib.request

import re

# 获取html页面

def getHtml(url):

page = urllib.request.urlopen(url)

html = page.read()

return html

# 获取html中table中的数据

def getData(html):

reg = re.compile(r'.{1,7}

dataList = reg.findall(html)

data = []

for i in dataList:

data.append(i[4:-2])

return data

# 将table中的数据切分为每一位同学的个人信息集

def dataPart(data):

part = []

for i in range(10):

i *= 6

part.append(data[i:i + 6])

return part

# 查询成绩不低于570的学生

def selectScore(part):

stu_id = []

for i in range(len(part)):

if int(part[i][5]) >= 570:

stu_id.append(part[i][0])

return stu_id

# 查询年龄大于20,性别为男性,民族为少数民族,总成绩大于500的学生

def select(part):

stu_id = []

for i in range(len(part)):

if int(part[i][3]) > 20 and part[i][2] == '男' and part[i][4] != '汉族' and int(part[i][5]) > 500:

stu_id.append(part[i][0])

return stu_id

#对查询到的数据加亮

def modifyHtml(stu_id):

html = refresh()

if stu_id == None:

return html

else:

for i in range(len(stu_id)):

html = html.replace(''+stu_id[i]+'',''+stu_id[i]+'')

return html

#refresh

def refresh():

html = getHtml('http://localhost/page.html').decode('utf-8')

return html

url = 'http://localhost/page1.html'

html = getHtml(url).decode('utf-8')

data = getData(html)

part = dataPart(data)

#查询不低于570的人

stu_id1 = selectScore(part)

#查询(可以修改条件)

stu_id2 = select(part)

# html=modifyHtml(stu_id1)

html = modifyHtml(stu_id2)

f1=open(r"D:\site\page1.html","w",encoding="utf-8")

f1.write(html)

print('修改完毕')

f1.close()

相关推荐:

【实习报告】计算机专业Python实习报告

【Python培训班】颠覆传统编程难度 小白也能做开发

免责声明:本文来源于网络,由网友提供或网络搜集,仅供个人交流学习参考使用,不涉及商业盈利目的。如有版权问题,请联系本站管理员予以更改或删除。谢谢合作!

相关推荐

 
 
咨询中心
优就业微信扫一扫
微信扫一扫

400-650-7353

加入官方微博