导航菜单
首页 >  上海市计算机二三级考试  > 上海市高等学校信息技术水平考试

上海市高等学校信息技术水平考试

一、部分神经网络

实现如下神经网络: 输入层包含两个神经元i1,i2和bias项b1;第二层隐含层包含h1,h2两个神经元和bias项b2;第三层是输出层包含o1,o2。每条线上标的w是层与层之间连接的权重,激活函数为sigmoid函数,假设两个输入是0.5和0.1。 在这里插入图片描述

import numpy as np#激活函数sigmoiddef sigmoid(x):return 1 / (1 + np.exp(-x))if __name__ == '__main__':wi = [[0.25, 0.20], [0.30, 0.15]] # Weight of input layerwo = [[0.40, 0.45] , [0.50, 0.55]]# Weight of output layerb1 = 0.30b2 = 0.65x = [0.5, 0.1]# 前向传播z1 = np. dot (wi, x) + b1 # 矩阵相乘a1 = sigmoid (z1)z2 = np. dot(wo, x) + b2a2 = sigmoid (z2)print( "result:" + str(a2[0]) + ", result:" +str(a2[1]))

结果:

result:0.7099209183344533, result:0.7221196058493572 二、输入两个集合setA和setB,分别输出它们的交集、并集、差集

Python set() 函数 python求两个列表的并集.交集.差集 python 集合比较(交集、并集,差集) python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算.

x & y # 交集 x | y # 并集 x - y # 差集 (项在x中,但不在y中)x ^ y # 对称差集(项在x或y中,但不会同时出现在二者中)

例子:

A = [1,2,3,4]B = [3,4,5,6]print('交集:', set(A) & set(B))print('并集:', set(A) | set(B))print('差集:', set(A) - set(B)) 交集: {3, 4}并集: {1, 2, 3, 4, 5, 6}差集: {1, 2} 三、广度优先搜索算法

数据结构之广度优先算法的Python简单实现 在某社交网络中存在一位意见领袖,需要使用广度优先搜索算法找出这位意见领袖。社交网络通过散列表的形式保存,如用户"赵"关注了"钱"、“孙"和"李”,而"钱"关注了"周"和"吴",则保存为: graph[“赵”] = [“钱”, “孙”, “李”] graph[“钱”] = [“周”, “吴”] 程序使用一个预定义的函数person_is_leader§来判断用户是否为意见领袖。假设从用户"赵"开始搜索,需要确认他的关系网中是否有意见领袖。改正下列代码,使其能够得到正确的结果。

from collections import dequegraph = {}graph["赵"] = ["钱", "孙", "李"]graph["钱"] = ["周", "吴"]# 假设我们这样判断,如果这个人的姓名是以m结尾,那么它就是芒果销售商def person_is_leader(name):return name[-1] == ""def main():# deque()函数用于创建一个双向队列search_quene = deque()# 假设从用户"赵"开始搜索search_quene += graph["赵"]while search_quene:person = search_quene.popleft()if person_is_leader(person):print (person + " is the leader.")return Trueelse:search_quene += person#将person的关注者加入队列search_quenereturn Falseif __name__ == '__main__':main() 四、贪婪算法

某辆车加满油后最多可以行驶600公里,同时高速公路上有若干加油站,相邻站点之间的距离均小于600公里,加油站之间的距离信息保存在一个列表Distances里。现在需要通过贪婪算法求出此车辆跑满全程所需要加油的最少次数。

Distances = [200,300,400,100,200,500]num = i = s = 0while i = 600:s = Distances[i]num += 1i += 1print(num) 3 五、Logistic回归预测

现有学习驾驶技术投入的练习时间(月)与通过考试成绩(是否通过)的历史数据,现使用Logistic回归预测训练时间为两个半月的考试成绩。

import numpy as npx = np.array([0.50, 0.75, 1.00, 1.25, 1.50, 1.75, 1.75, 2.00, 2.25, 2.50, 2.75, 3.00, 3.25, 3.50, 4.00, 4.25, 4.50, 4.75, 5.00, 5.50]) # 训练时间(月)y = np.array([0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1]) # 通过考试为1,不通过考试为0from sklearn.linear_model import LogisticRegressionm = LogisticRegression()#逻辑回归模型定义x = x.reshape(-1, 1)#如果只有一个特征,重塑为一列数组y = y.reshape(-1,1)m.fit(x,y)#模型学习p=m.predict([[2.5]]) #预测print(p)print(m.score(x,y))#评估模型准确率

结果:

DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel(). y = column_or_1d(y, warn=True)[0]0.8 六、基本遗传算法

用Python编程语言实现的基本遗传算法的程序如下:

# selection.pyfrom __future__ import divisionimport numpy as npdef selection(population,value):#轮盘赌选择fitness_sum=[ ]for i in range(len(value)):if i ==0:fitness_sum.append(value[i])else:fitness_sum.append(fitness_sum[i-1]+value[i])for i in range(len(fitness_sum)):fitness_sum[i] += sum(value)# 选择新种群population_new = []for i in range(len(value)):rand = np.random.uniform(0, 1)for j in range(len(value)):if j == 0:if 0

相关推荐: